生成單極性SPWM只用了一個定時器,還剩一個定時器,打算用剩下的這個定時器生成2路互補(bǔ)帶死區(qū)的PWM波,用于替代sg3525,基本功能和SG3525類似,占空比連續(xù)可調(diào)。
打算用定時器、中斷和指針來實現(xiàn),用中斷來保持實時性,用指針來保存工作狀態(tài),
用盡量簡潔的語句實現(xiàn),執(zhí)行一個中斷子程序看看能不能在100納秒內(nèi)完成。
盡量避免打擾SPWM波形的生成。
如仿真成功上個圖。
生成單極性SPWM只用了一個定時器,還剩一個定時器,打算用剩下的這個定時器生成2路互補(bǔ)帶死區(qū)的PWM波,用于替代sg3525,基本功能和SG3525類似,占空比連續(xù)可調(diào)。
打算用定時器、中斷和指針來實現(xiàn),用中斷來保持實時性,用指針來保存工作狀態(tài),
用盡量簡潔的語句實現(xiàn),執(zhí)行一個中斷子程序看看能不能在100納秒內(nèi)完成。
盡量避免打擾SPWM波形的生成。
如仿真成功上個圖。
從仿真的結(jié)果來看,這事靠譜,
最早編的一個實驗程序,因為spwm脈寬的時間太短只有30個機(jī)器周期,所以和推挽的用的pwm脈寬產(chǎn)生沖突,導(dǎo)致兩邊輸出的波形都不穩(wěn)定,
經(jīng)過多次實驗把spwm的脈寬加大到60個機(jī)器周期,推挽用的兩路pwm信號改成120機(jī)器周期,死區(qū)用兩個機(jī)器周期,用24mhz 51仿真,結(jié)果兩邊的波形都很穩(wěn)定,當(dāng)然不能說沒有一點干擾,不過能接受。
耗時最短的pwm推挽必須放在最高中斷優(yōu)先級別。
下一步給兩路推挽加上反饋,帶少許斜坡控制。
一共有兩路spwm,兩路工頻,兩路互補(bǔ)推挽,一個51就能跑了。
如用增強(qiáng)型51stc指令執(zhí)行效率平均快6倍估計干擾更小,因為花在加減乘除上的時間更少。
更新:下圖是仿真,軟件自帶的51性能有點弱,將就看,
兩路推挽波形通過調(diào)節(jié)占空比來實現(xiàn)穩(wěn)壓。
圖中的SPWM波是隨手填的,不是按照sin生成的,直接填1.2.3.4.5.....
ARM 有很多體系,低成本的芯片中早期應(yīng)用最多的是 ARM7TDMI,現(xiàn)在最好是 CM3,所以買書也要買對了。
CM3 的體系比 ARM7TDMI 科學(xué)太多了,性價比非常高。我用了十年 51 芯片,早兩年開始全面采用 CM3,基本上不用 51 了。
以前用 51,以 C 編程為主,代碼重用的機(jī)會很低,每次重用以前的代碼都需要修改才能用。現(xiàn)在用 CM3,全面使用操作系統(tǒng),加上 C++ 對象化編程,一次編程調(diào)試后,以后基本上拿來即用。
今天看了stc的文檔仔細(xì)算了一下,35mhz的stc比老51 的12mhz快35倍,12mhz的51一個機(jī)器周期1微秒,那35mhz的sct一個機(jī)器周期就是相當(dāng)于28納秒。好像arm的機(jī)器周期也是20多納秒,只不過32位的mcu指令執(zhí)行效率要高些,一條指令是不是頂8位的幾條指令。
假如stc出一款能跑100m晶振的mcu那不是趕超16位的mcu了。要定時器分頻多搞幾種,定時器多幾個,呵呵無敵了。
改天砸個48mhz的晶振上去看看能不能跑。
不是這樣算的,ARM CM3 的外設(shè)十分豐富,基本上大部分工作都是硬件實現(xiàn),另外指令速度很高,例如乘法只需要一個周期。
我用 DMA 處理 SPWM 調(diào)制,電壓 399 級分辨率、占空比 3600 級分辨率,平均每輸出三個脈沖需要 CPU 處理一次,每處理一次大約二十個指令周期。即每秒需要占用 399 / 3 * 20 * 50 = 133000 個指令周期,而 72MHz 的 CM3 第秒可執(zhí)行 75000000 個指令??梢哉f CPU 完全是空轉(zhuǎn)狀態(tài)。
現(xiàn)在正在看mdk4的書和cm0的書還有一本arm電機(jī)控制的書。
dma是不是電腦里面的直接內(nèi)存訪問類似的含義?
cm0和cm3有多大差別?盡量從低配置做起。
對于現(xiàn)在單片機(jī)的主流工藝來說,內(nèi)核的價錢幾乎都是可以忽略的,從51到cm3差距不到1塊錢的。
集成的外設(shè)和存儲器才是更具有價值的,以stm32f103rct6為例
不算內(nèi)核僅僅算集成的資源:
3個最大20路輸入的12位ad,速度達(dá)到1msps
2個12為的da,速度1msps
10個以上的定時器,其中1和8可以出3對互補(bǔ)的波形,帶剎車信號,2345有4路輸入或輸出,簡單說可以輸出超過20路不同頻率任意占空比的pwm?;蛘哂脕聿东@pwm也可以
串口應(yīng)該是5個
can接口1個
硬件spi2個,速度可以達(dá)到36兆的
flash有256k,ram有20k
還有dma支持最大14路,可以實現(xiàn)內(nèi)存到外設(shè)或者反過來的自動連續(xù)操作
這一款芯片現(xiàn)在零售不過是16塊左右,想想單獨購買能買到這些外設(shè)的1/3不?
stc 48Mhz已經(jīng)跑起來了,正在測試穩(wěn)定性,在ARM熟悉之前STC還要大力鉆研。
SPWM和前級互補(bǔ)脈沖已經(jīng)出來了,正在調(diào)試前級的反饋。
更新:前級脈沖40K占空比可調(diào),脈寬調(diào)到最小后可關(guān)閉輸出,但是兩路最大占空比還是不夠大只有80%多,真是對主頻的要求越來越強(qiáng)烈了。
后級H橋也可調(diào)壓。
48M晶振的STC對線路的要求相對嚴(yán)格,電路用洞洞板搭的,沒什么特別,但是0插拔力插座有時候沒插穩(wěn)會出現(xiàn)不穩(wěn)定現(xiàn)象,要重新插拔一下。
48M晶振的好處就是能把載波推高到20K,不過我覺得16K就差不多了。
關(guān)注一下??!
弱弱的問一句,本人有 51+C 基礎(chǔ),以前一直使用C8051的片子。貌似外設(shè)也相當(dāng)?shù)亩?,?jù)自己稱呼為獨立的片上系統(tǒng)。
不知51與CM3有何本質(zhì)上的區(qū)別(除了位數(shù)X4以外),學(xué)習(xí)起來是否容易?應(yīng)該從何處下手?沒有C++基礎(chǔ)使用ARM 操作系統(tǒng)是否會有困難?還請不吝賜教!
51的優(yōu)勢就是編程簡單,出產(chǎn)品快,arm要出產(chǎn)品要比51難10倍。
這點是無可否認(rèn)的。