新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 如何無冒險更新PWM數值?

        如何無冒險更新PWM數值?

        作者: 時間:2025-01-08 來源:TsinghuaJoking 收藏

        一、前言

        本文引用地址:http://www.104case.com/article/202501/466097.htm

        在剛才的實驗中,使用 GP8500,將單片機發送的波形轉換成。在這個過程中,會發現輸出有一些毛刺。信號中的毛刺主要是因為輸出的波形出現了抖動。可以看到,在抖動前面和后面的占空比不同。由此可以知道,在這中間,單片機對PWM的比較單元進行了數值更新。更新前后,GP8500輸出的電壓不同。那么問題來了,如何能夠避免PWM中寄存器更新的過程中,出現輸出脈沖抖動的情況呢?下面討論一下這個問題的解決方案。

        ▲ 圖1.1.1 輸出信號中的毛刺

        二、解決方案

        數據手冊中,對于更新PWM模塊中 CCR寄存器有相應的說明。需要對 CCMR寄存器中的 OCnPE位進行設置。如果設置為0,則更新后的數值會立即生效。否則,只有當PWM模塊出現更新事件之后,CCR寄存器才會更新寫入的數據。可以看到,在程序中,之前對于比較寄存器預裝使能位沒有置1,疏忽了。現在將它修改過來,重新測試,就會發現,前面遇到的輸出毛刺信號就消失的無影無蹤了。

        ▲ 圖1.2.1 修改之后,輸出波形就沒有毛刺了

        ※ 總??結 ※

        本文記錄了 單片機中 PWM 比較寄存器更新的問題。如果使能比較寄存器預存功能,可以避免輸出PWM波形出現抖動現象。這就會讓 GP8500 這顆PCA芯片的輸出信號中不會出現毛刺。那么問題來了,既然PWM 比較寄存器的預存功能如此重要,為何還會存在一種設置,來取消這種預存功能呢? 這種預存功能取消之后,會適合應用在什么情況下呢?

        參考資料

        [1]利用PWM輸出模擬電壓:STC32G 驅動 GP8500: https://zhuoqing.blog.csdn.net/article/details/144979365



        關鍵詞: STC32G PWM 模擬信號

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南华县| 临桂县| 四子王旗| 广丰县| 绥阳县| 合江县| 青岛市| 阿鲁科尔沁旗| 绥芬河市| 屯留县| 桦川县| 米泉市| 平顶山市| 师宗县| 遂平县| 景宁| 高碑店市| 通城县| 封开县| 罗定市| 茶陵县| 上虞市| 宜兴市| 博客| 南丹县| 南昌县| 灵宝市| 忻州市| 开远市| 大丰市| 靖远县| 昭通市| 瓦房店市| 墨江| 博兴县| 府谷县| 米泉市| 游戏| 晋州市| 凤台县| 肇庆市|