請(qǐng)問(wèn)CH552的PWM緩沖機(jī)制是什么?

CH552手冊(cè)里的PWM部分非常簡(jiǎn)略,F(xiàn)IFO這個(gè)詞提了一次,也沒(méi)有具體解釋。


有人問(wèn)他的代碼出現(xiàn)了PWM異常的問(wèn)題。

https://github.com/DeqingSun/ch55xduino/issues/135


然后我測(cè)試了一下,似乎是如果我在PWM下降沿時(shí)鐘周期內(nèi)寫(xiě)入一個(gè)較低值,整個(gè)PWM周期就保持為高了。


代碼很簡(jiǎn)單,PWM周期預(yù)設(shè)為約1ms

P3_3 = 1;

PWM_DATA1 = 2;

delay(1);

P3_3 = 0;

PWM_DATA1 = 1;

delay(1);


Screen Shot 2023-05-04 at 5.04.29 AM.png

請(qǐng)問(wèn)這是操作不當(dāng),還是可以認(rèn)為芯片的bug?




熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

您好,

我這邊做個(gè)同樣的測(cè)試試試看。

或者您可以直接將測(cè)試代碼發(fā)送至郵箱dxy@wch.cn

或者留下您的郵箱,我將測(cè)試正常的代碼發(fā)給您。


as far as i understand that, PWM_DATA1 write should be synced with bPWM_IF_END.


maybe its a good idea to do that in an interrupt function and write PWM_DATA1 only when

bPWM_IF_END is signalled.




完整測(cè)試代碼和邏輯分析儀截圖


icon_rar.gifch552_pwm_glitch.zip


Screenshot 2023-05-05 090348.png


您好

改變占空比應(yīng)該與上一個(gè)PWM周期中斷保持同步,使用中斷方式,PWM周期完成中斷中去改變PWM占空比。

若不使用中斷,可以使用查詢中斷標(biāo)志方式,查詢到該中斷發(fā)送再去修改PWM占空比,以下僅供參考

image.png


當(dāng)我把寫(xiě)入值改成0的時(shí)候,問(wèn)題又出現(xiàn)了,再次印證了我的猜想:在PWM下降沿時(shí)鐘周期內(nèi)寫(xiě)入一個(gè)較低值,整個(gè)PWM周期就保持為高了。


Screen Shot 2023-05-07 at 2.32.31 AM.png


可以使用提前置寄存器data值方式解決:

image.png


請(qǐng)問(wèn) “提前置寄存器data值” 在圖上哪里?不好意思我沒(méi)看出來(lái)


圖片已更新


好的謝謝,我有邏輯分析儀時(shí)候再試一下。

繞這么大一圈。可以認(rèn)為這算是PWM模塊的bug吧。如果是的話還請(qǐng)?jiān)跀?shù)據(jù)手冊(cè)里勘誤一下,以防后人掉坑。


就是說(shuō)PWM的寄存器沒(méi)有緩存吧?

保險(xiǎn)起見(jiàn),要停止PWM后再改寫(xiě)PWM的寄存器。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频