2012年12月29日 星期六

STM8 Low Power Run引發的問題

STM8 Low Power Run是最省電的執行模式,省電省到連Flash ROM的電都關閉,只使用SRAM執行程式。
但引發一個有趣的問題:如何將程式載入到RAM中。

有些編譯器支援inram這個函式修飾字。
但bee個人是覺得1KB的RAM中若是有幾個函式都是inram,是會有問題的。
因為inram也是有分不同狀況,不會全部狀況的都是要用到inram。
也就是不同狀況inram的函式不同,為了節省RAM,都是要用時才使用Flash複製到RAM。

這樣就會產生程式是存於Flash中,但執行時在RAM中。
這樣子並不符合一般編譯器運作原理,且會引發程式重定位問題。
比較簡單的方式是,在RAM中執行的程式用另一個專案去編。
再將Machine Code以data的方式存於Flash ROM中,執行inram前再將程式複到到RAM中。


MCU多功能IO應用

確定STM8是6502進化版,沒想到是在這種狀況下學到6502。
不管其核心,ST的周邊系統是不錯的。

在使用開發板的觸控應用,發覺效果不錯。
可是其上的STM8使用的是一般GPIO腳。
原理是將GPIO設定高電位、低電位及高阻抗之間變換做RC充放電。
並應用輸入位準變換來測RC充放電時間。
真是將GPIO用到極致。

要不是從信號上來看,光看程式應是無法看懂是如何做觸控檢測。
所以MCU程式,並不是純軟體,而是信號產生及處理的程式。

2012年12月24日 星期一

STM8使用評估

STM8是一個8位元MCU。
所以,它和8051及Cortex M0+的關係造成Bee做為評估的原因。
其實又和MSP430也有一點關係。

就價格來說,Cortex M0+已將8位元及16位元MCU價格給封頂了。
所以只能在Cortex M0+無法達到的地方才有考量其他微控器的需求。
Bee就遇到,主是功耗考量。

在具有功耗考量的環境,其實就是使用電池電力的環境。
長期以來一直是MSP430的天下。
不過MSP430和Cortex M0+的價格已經開始重疊。
再低價下去,就要往8051做為考量。不過8051的功耗似乎是低不下來。
此時Bee想到FAE曾經告知,現行新的8位元MCU其功耗不比MSP430來得差。
這是有可能的,因為不考量效能的狀況下,8位元MCU其邏輯閘數是較低,功耗也可較低。
所以就去評估STM8L051F3這個MCU。

STM8除核心外,其週邊架構和STM32是同一套結構。
這個架構會使得習慣使用STM32的C語言使用者容易去習慣STM8。
週邊從STM32來的特性沒有降太多。
有12位元ADC、USART、SPI、I2C及RTC,放了不少。
還有DMA,可以節省通信上的控制。這點Bee還蠻喜歡的。
另一個可以利用UART做軟體更新,只需利用原先UART通信,不像MSP430是另外一型通信格式。

只是8位元MCU的價格及功能,Bee看了只是覺得做MCU硬體的錢還真難賺。