找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1918|回復: 10
收起左側(cè)

請教前輩,STC單片機芯片PWM硬件設(shè)置

[復制鏈接]
ID:734017 發(fā)表于 2023-12-7 22:21 | 顯示全部樓層 |閱讀模式
芯片8H3K32S2  系統(tǒng)24M  PWMA_ARR周期 PWMA_CCR占空比
//********************************************************PWMA 互補*****************************************
#define PWM_PSC                         (12-1)        //12分頻,0.5us  
#define PWM_PERIOD                 10                        //周期5us
#define PWM_DUTY                         2                        //占空1us        
        
        
void PWMA_Config()                                //
{
        PWMA_PS =  0x40;                                   //P2.6P2.7 管腳
        
        PWMA_PSCRH = (u16)(PWM_PSC >> 8);
        PWMA_PSCRL = (u16)(PWM_PSC);                 
        
        PWMA_CCER2 = 0x00; // 寫 CCMRx 前必須先清零 CCERx 關(guān)閉通道
        PWMA_CCMR4 = 0x60; // 設(shè)置 CC2 為 PWMA 輸出模式,PWM模式1
        PWMA_CCER2 = 0x50; // 使能 CC4P4n


        
        PWMA_CCR4H = (u16)(PWM_DUTY >> 8);  //設(shè)置占空比
        PWMA_CCR4L = (u16)(PWM_DUTY);
        
        PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 設(shè)置PWM周期
        PWMA_ARRL = (u16)(PWM_PERIOD);
        
        //PWMA_IER
        //PWMA_DTR = 1;
        PWMA_ENO = 0xc0; // 使能 PWM4p4n 端口輸出
        PWMA_BKR = 0x80; // 使能主輸出
        PWMA_CR1 = 0x01; // 啟動PWM定時器
}        
下圖是12分頻,PWMA_CCR 1us  PWMA_ARR 5us 占空比0.2
51hei圖片_20231207215256.jpg
下圖是6分頻,PWMA_CCR 1us  PWMA_ARR 5us 占空比0.2
51hei圖片_20231207215233.jpg

周期要比設(shè)置的ARR要大,大了接近一個正脈寬。在兩種分頻下還不一樣。是硬件清耗嗎?產(chǎn)生事件消耗?我把其它功能已經(jīng)全部關(guān)閉,中斷也沒開。只留了一下PWMA。
然后再改快一點
12分頻,PWMA_CCR 0.5us  PWMA_ARR 1us 占空比0.5
51hei圖片_20231207220947.jpg

實際周期是3倍正脈寬
12分頻,PWMA_CCR 0.5us  PWMA_ARR  0.5us 占空比0.5
51hei圖片_20231207220955.jpg

PWMA_ARR  成了 1us ,正負都一樣了,是不是產(chǎn)生事件要消耗0.5US時間?這個怎么計算。對于指令周期現(xiàn)在還是不太懂。

回復

使用道具 舉報

ID:807591 發(fā)表于 2023-12-9 12:00 | 顯示全部樓層
自己仿真一下,這個單片機就這么快,0.5us 能執(zhí)行幾個指令?IO翻轉(zhuǎn)速度多少 自己測一下就知道了
回復

使用道具 舉報

ID:734017 發(fā)表于 2023-12-9 17:46 | 顯示全部樓層
szb314 發(fā)表于 2023-12-9 12:00
自己仿真一下,這個單片機就這么快,0.5us 能執(zhí)行幾個指令?IO翻轉(zhuǎn)速度多少 自己測一下就知道了

我不會,我直接打板,寫程序調(diào)試,不會仿真
回復

使用道具 舉報

ID:57657 發(fā)表于 2023-12-9 20:18 | 顯示全部樓層
szb314 發(fā)表于 2023-12-9 12:00
自己仿真一下,這個單片機就這么快,0.5us 能執(zhí)行幾個指令?IO翻轉(zhuǎn)速度多少 自己測一下就知道了

仿真沒有這些硬件PWM的寄存器,必須實物測試。
回復

使用道具 舉報

ID:401564 發(fā)表于 2023-12-10 13:37 | 顯示全部樓層
PWM頻率不要設(shè)定得太高.你這都1MHZ了
很多應用是用不到那么高的頻率的
頻率太高,單片機時鐘誤差影響就越大
建議你試一下100KHZ或者更低的頻率試一下
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-12-10 17:19 | 顯示全部樓層
周期 = 設(shè)置值+1
回復

使用道具 舉報

ID:734017 發(fā)表于 2023-12-11 09:12 | 顯示全部樓層
Y_G_G 發(fā)表于 2023-12-10 13:37
PWM頻率不要設(shè)定得太高.你這都1MHZ了
很多應用是用不到那么高的頻率的
頻率太高,單片機時鐘誤差影響就越 ...

謝謝大佬
回復

使用道具 舉報

ID:734017 發(fā)表于 2023-12-11 09:12 | 顯示全部樓層
coody_sz 發(fā)表于 2023-12-10 17:19
周期 = 設(shè)置值+1

你好,我在手冊上沒找到你說的這個設(shè)置。
回復

使用道具 舉報

ID:734017 發(fā)表于 2023-12-11 10:49 | 顯示全部樓層
coody_sz 發(fā)表于 2023-12-10 17:19
周期 = 設(shè)置值+1

51hei圖片20231211104816.png 51hei圖片20231211104744.png 為什么要+1.我搞不懂了,煩死人了
回復

使用道具 舉報

ID:401564 發(fā)表于 2023-12-11 18:17 | 顯示全部樓層
happy2058 發(fā)表于 2023-12-11 10:49
為什么要+1.我搞不懂了,煩死人了

這不就是代入公式計算就可以了呀,沒有什么高難度的東西,只是麻煩了一點而已
而且,PWM在控制上,一般來說,更重要的占空比,頻率并不會要求過高的
比如說,10KHZ,有時候是9KHZ,有時候是11KHZ,這其實影響不大的
除非是頻率控制電路
回復

使用道具 舉報

ID:734017 發(fā)表于 2023-12-11 20:23 | 顯示全部樓層
Y_G_G 發(fā)表于 2023-12-11 18:17
這不就是代入公式計算就可以了呀,沒有什么高難度的東西,只是麻煩了一點而已
而且,PWM在控制上,一般來說, ...

謝謝前輩。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表