請問CH552的PWM緩沖機制是什么?

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


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

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


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


代碼很簡單,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

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




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

您好,

我這邊做個同樣的測試試試看。

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

或者留下您的郵箱,我將測試正常的代碼發(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.




完整測試代碼和邏輯分析儀截圖


icon_rar.gifch552_pwm_glitch.zip


Screenshot 2023-05-05 090348.png


您好

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

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

image.png


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


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


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

image.png


請問 “提前置寄存器data值” 在圖上哪里?不好意思我沒看出來


圖片已更新


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

繞這么大一圈??梢哉J(rèn)為這算是PWM模塊的bug吧。如果是的話還請在數(shù)據(jù)手冊里勘誤一下,以防后人掉坑。


就是說PWM的寄存器沒有緩存吧?

保險起見,要停止PWM后再改寫PWM的寄存器。


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

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