想让8H1K08-SOP16输出一个14KHZ左右的PWM
目前只有第4脚(P1.7)可以用,根据PDF里面的历程改了一下配置,没有输出,是这芯片不支持吗?P_SW2 |= 0x80; //使能访问 XFR,没有冲突不用关闭
PWMA_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCERx 关闭通道
PWMA_CCMR1 = 0x60; //设置 CC1 为 PWMA 输出模式
PWMA_CCER1 = 0x01; //使能 CC1 通道
PWMA_CCR1 = 100; //设置占空比时间
PWMA_ARR = 500; //设置周期时间
PWMA_ENO = 0x80; //使能 PWM4N 端口输出
PWMA_BKR = 0x80; //使能主输出
PWMA_CR1 = 0x01; //开始计时
根据您提供的代码及配置信息,我们对STC8H1K08-SOP16芯片的PWM功能进行分析。该芯片支持多路PWM输出,但需注意其引脚功能和寄存器配置是否正确。
您提到仅使用第4脚(P17)作为PWM输出,而根据STC8H1K08的数据手册,P17为PWM4N输出引脚,属于PWM模块的第四通道。因此,从引脚角度来看,该配置是可行的。
然而,从您提供的代码来看,存在以下几点需要注意:
1. PWMAENO寄存器设置:您设置 PWMAENO = 0x80;,该寄存器用于使能PWM输出端口。但需要注意的是,不同型号的STC单片机可能在寄存器定义上略有差异,建议查阅具体数据手册确认该寄存器的位定义是否与您的操作一致。
2. PWMABKR寄存器设置:您设置 PWMABKR = 0x80;,该寄存器用于主输出使能。此设置通常是正确的,但需确保其他相关配置已正确完成。
3. PWMACR1寄存器设置:您设置 PWMACR1 = 0x01;,表示启动计时器。这是正确的步骤。
4. PWM通道配置:您设置 PWMACCMR1 = 0x60; 和 PWMACCER1 = 0x01;,表示将通道1配置为PWM输出模式并启用。然而,对于PWM4N(即通道4),应使用 PWMACCMR4 和 PWMACCER4 寄存器进行配置,而非通道1的相关寄存器。
5. ARR和CCR值计算:您设置 PWMAARR = 500; 和 PWMACCR1 = 100;,这意味着周期为500个时钟周期,占空比为20%。若系统时钟频率为12MHz,则PWM频率约为12,000,000 / (5002) = 12kHz,接近您所需的14kHz。但由于实际时钟可能存在分频或误差,建议进一步验证。
综上所述,您的代码中存在关键的寄存器配置错误,特别是PWM通道配置部分。请参考数据手册,确保对通道4(PWM4N)的寄存器进行正确配置。如需进一步调试,建议使用示波器或逻辑分析仪观察引脚信号,以确认PWM是否正常输出。
[本文内容由国芯人工智能辅助生成,仅供参考] 建议先想清楚怎么提问题,
先列出你要实现的目标具体是什么,比如,需要输出几路PWM,频率和占空比分别是多少
再说你目前的状态或者遇到的问题 国芯人工智能 发表于 2025-8-3 14:08
根据您提供的代码及配置信息,我们对STC8H1K08-SOP16芯片的PWM功能进行分析。该芯片支持多路PWM输出,但需 ...
感谢,但是PWMACCER4没有,只有PWMACCER2 晓飛飛 发表于 2025-8-3 14:20
建议先想清楚怎么提问题,
先列出你要实现的目标具体是什么,比如,需要输出几路PWM,频率和占空比分别是多 ...
只需要一路,原来是用8G的。
这个8H好像比较强大一些。频率似乎可以任意。
刚格局楼上提示,修改了一下,有输出了。
11.0592M时
PWMA_CCR4 = 100; //设置占空比时间
PWMA_ARR = 799; //设置周期时间11.0592M时约13.8K
然后大概测试了一下,就是CCR的值在0-ARR+1之间,就是占空比0-100;
如果主频22.1184,就能获得相同频率下分辨率增加一倍的PWM信号了。
1600的分辨率那不是挺高的了,800也非常好了,记得8G好像只能到256的还是多少来
https://www.stcaimcu.com/data/download/Datasheet/STC8H.pdf
xiaobendan 发表于 2025-8-3 14:49
感谢,但是PWMACCER4没有,只有PWMACCER2
CCER1管PWM1和PWM2,CCER2管PWM3和PWM4,没有CCER3、CCER4。先看下手册吧。
建议先测试官方例程,再修改。 梁工 发表于 2025-8-4 16:12
CCER1管PWM1和PWM2,CCER2管PWM3和PWM4,没有CCER3、CCER4。先看下手册吧。
建议先测试官方例程,再修改。 ...
感谢,已经弄好了,接下来就是调整PID了,不太好搞。
有没有经验指导一下,就是驱动一个永磁直流电机调节速度,编码器只有60个信号
页:
[1]