不看不知道,STM8L101 與 STM8S103區(qū)別竟然這么大!
工作需要,漸漸的開始熟悉STM8L101這款超低功耗的芯片了,呵呵...
不看不知道,一看嚇一跳,這玩意手冊上標(biāo)明的功耗遠遠低于STM8S103。我們采用的還是延續(xù)著TSSOP20管腳的封裝。具體的芯片資源在手冊首頁都有詳細說明。
STM8L10x與STM8L15x外設(shè)圖如下:
硬件方面: STM8L101跟STM8S103來說,外設(shè)內(nèi)存映射,時鐘,中斷,管腳功能,電源管理都有了較大區(qū)別。有完全兼容的,也有 不完全兼容的,當(dāng)然也存在完全不兼容的模塊。WWDG,ADC都已經(jīng)被裁減了。
如下圖: 完全兼容的模塊有 STM8核心,調(diào)試接口,POR(掉電復(fù)位),電壓調(diào)節(jié)器,LSI,HSI,獨立看門狗,定時器,IR(RC5紅外接口)
下圖: 不完全兼容的模塊 特別注意中斷功能,選項字節(jié)
下圖: 完全不兼容的模塊
軟件方面:主要體現(xiàn)在固件庫,stm8l系列有自己的固件庫,版本為 stm8l10x_stdperiph_lib v1.1.0,STM8L自身的演示版程序也是使用這個庫。管腳定義的大小寫也發(fā)生了變化。
如: GPIO_PIN_0 ---- stm8s FW的寫法
GPIO_Pin_0 ---- stm8l FW的寫法,比較類似與STM32庫的風(fēng)格
如果不使用庫文件編程,而是直接操作寄存器,可在 "C:Program FilesStmicroelectronicsst_toolsetinclude 找到stm8l101.h文件,這個文件定義了STM8L101所使用的外設(shè),內(nèi)存映射關(guān)系。
還有就是文件的命名風(fēng)格有些變化,stm8s_gpio.h -> stm8l10x_gpio.h
具體細節(jié)方面,可參考stmcu.org上的AN3139 STM8L移植與兼容性指南。
移植細節(jié):
從STM8S103移植到STM8L101首先考慮時鐘,兼容性指南上說明了在STM8L101上已經(jīng)完全做了改變,如下圖:
STM8L時鐘樹:
STM8S時鐘樹:
很需要注意的是,STM8L101只有HSI和LSI時鐘,而且只有HSI能做為主時鐘,LSI時鐘的頻率也從128Khz變成了38Khz,導(dǎo)致了AWU功能在做定時喚醒時,需要調(diào)整延時時間的設(shè)置,還有外設(shè)的時鐘需要手動開啟,默認情況與STM8S103不一致,不再是打開狀態(tài)。下圖:
其次是中斷方面,中斷向量表已經(jīng)發(fā)生巨大改變。
STM8L101 中斷向量表:
STM8S103中斷向量表:
中斷控制方式也有重大調(diào)整,增加了端口標(biāo)志位寄存器,配置中斷觸發(fā)方式寄存器,中斷觸發(fā)方式新增對應(yīng)0~7個IO口的觸發(fā),另外就是GPIO端口本身的觸發(fā)方式。至于使用哪一種觸發(fā)方式,在EXTI_CONF進行配置。
STM8L101中斷寄存器:
STM8S103中斷寄存器:
所以中斷方面是一個很需要注意的,可能會導(dǎo)致程序崩潰。或是進中斷后出不來。 具體參考手冊說明。
再者就是AWU喚醒功能,這是可選的,為了低功耗,這又是必須的。
AWU使用LSI為其提供時鐘,STM8S103采用128Khz,而STM8L101轉(zhuǎn)而是38Khz,這就導(dǎo)致了在應(yīng)用時需要注意時間的設(shè)置。
如下圖,進行對比。
STM8L101 AWU延時情況:
STM8S103 AWU延時情況:
如果需要2S的延時,對于STM8S103只需要設(shè)置AWUTB為0xD,APR分頻64即可得到2.048S的延時,而在STM8L101里面,則需要設(shè)置AWUTB為0xB,APR分頻64,這樣得到1.7s的延時,所以還需要加上27ms左右延時,才能勉強得到2s延時。這也是設(shè)計時需要考慮的。
定時器方面,與STM8S103區(qū)別不大,主要是因為時鐘都是采用HSI,不用做修改都能正常使用。
另外STM8L101還有紅外接口,BEEP,SPI,I2C等功能,需要了解的東西還有很多,后續(xù)就是具體測量功耗了。
總結(jié):
1. STM8L101對比STM8S103有很多優(yōu)點,電壓范圍更寬,功耗更低,裁減了一些外設(shè),窗口看門狗,外部晶振等。
2. 移植方面,需要從硬件和軟件兩方面入手,更多的是軟件操作上。
3. 軟件需要考慮時鐘,定時,中斷,電源功耗等方面因素。