STM32L432KC 測評

2022-01-31 電子工程世界

又一次的拿到ST的評估板了。不太喜歡每次的測評都寫的千篇一律,那樣沒什麼意思。我覺得寫東西也好,生活也好。太過於重複的東西往往讓人會變得麻木。拿到Nucleo-L432KC,就該想想改從什麼地方入手,說實話,我覺得僅僅靠一篇或者幾篇帖子難以對一個微控制器(MCU)做非常全面的剖析。至少我覺得應該從自己熟悉以及感興趣的方面入手,做一些操作,表達一下看法吧。這樣在這麼炎熱的天氣,才有動力測評下去。唉~~~,說起來,真的好熱啊……
一、外觀
       在這裡我拿Nucleo-F042K6與其做外觀對比。至於Nucleo-l432kc的性能說明,官網都有。我就不搬磚過來啦。
STM32L432KC  官網介紹

  從以上兩個不同型號的Nucleo-32板外觀的對比,我們可以發現兩個不同之處:
a、那就是Nucleo-L432K多了X1;從原理圖看就是如下紅色方框中的X1.

從datasheet,L4用戶手冊看這個地方就是比起其他Nucleo的板子在OSC32_IN/OUT的引腳多了個X1的晶振 。
 b、MCU的封裝由LPQFP變成了UFQFN。至於外面的那個焊盤是幹什麼用的,我請教過@dcexpert
       這個焊盤是預留的QFP的封裝,這樣同一個板子就可以兼容兩種不同封裝的晶片了。
另一方面:NUCLEO-L432KC開發板是首個集成一款QFN32微型封裝微控制器的Nucleo-32開發板,板載一顆STM32L432KCU6微控制器(UFQFPN32)。

另外,Nucleo-L432的引腳分布看起來也和別的Nucleo-32的板子沒什麼區別。


當然,別看這個L432「小個子」,但是它的內部的模塊一點也不比F4的有些型號少。特別是它還增加了可編程的運放單元。

二、將程序放在SRAM中執行
方法一:
a、這裡以LED電平翻轉的程序為例。首先用CubeMX配置LED電平翻轉的程序。
b、打開MDK工程,打開Options for Target 選項。打開Linker選項,可以看到
Flash 起始地址:0x08000000
RAM 起始地址: 0x20000000

編譯工程後,可以看到Memory map文件GPIO_IOToggle.map文件在該工程的目錄下:

用Notepad打開該文件,可以看到如下兩個函數的地址在FLASH中
HAL_GPIO_TogglePin();
  HAL_Delay();

通過#pragma arm section code = "RAMCODE" 和#pragma arm section 
具體的方法如下:
1、找到,並打開.sct文件(我使用Notepad打開)

2、修改.sct文件。自定義一個RAMCODE的section,放在RW_IARM執行區域,地址範圍為:
0x20000000~0x20000800(這裡我放2KB的空間)
因為從map文件來看。Total ROM Size 就佔用的Flash大小,Total RW Size是佔用的SRAM大小
led電平翻轉這個程序,所佔SRAM大小為1kb左右

修改.sct文件,並保存

3、在工程中,Options for Target 的Linker選項中,使用剛才修改過的.SCT文件。

4、以#pragma arm section code = "RAMCODE"為開頭。將所有需要放到RAMCODE section的函數包含進來。
這個時候編譯器會自動將這些函數放到RAMCODE所在的0x200000000開始的區域。
 所以,重新編譯後,打開map文件,就可以看到這幾個函數的地址在SRAM中了。

方法二:
1、同樣需要修改.SCT文件(修改的方法同方法一的1、2);(我修改成64KB的RAM(因為L432隻有64kb的Sram))

2、將需要在RAM中執行的函數前面添加__attribute__((section("RAMCODE")))聲明該函數放在RAMCODE section中。這裡需要注意的是:如果將這個聲明放在函數前面,那麼這個函數調用的所有函數也會放到RAMCODE的section中。

不過還是需要像方法一一樣,使用修改過的.sct文件(詳見方法一的3)

//   #pragma arm section code = "RAMCODE"

__attribute__((section("RAMCODE")))

void Toggle_LED(void)

{

    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3);

    HAL_Delay(300);       

}

複製代碼

 
打開map文件,看到這幾個函數的地址在ram中

由此可見,我覺得這個方法二比起方法一,要更加的靈活一些。因為方法二隻需要添加聲明就可以了。方法一太過於死板了。

三、L432 的特色:OPAMP(可編程運放單元)
   如英文版的用戶手冊描述:它的正向輸入端可連接到內部DAC;輸出端可連接到內部的ADC
   如下為引腳連接功能:

打開en.stm32cubel4\STM32Cube_FW_L4_V1.5.0\Projects\STM32L432KC\Nucleo\Examples\OPAMP\OPAMP_PGA
這個工程:

/* set to 1 after PA.12 (Arduino D2) interrupt  */
__IO uint32_t UserButtonStatus = 0;

PA12作為按鍵中斷,來改變opamp的放大增益。所以將杜邦線的一頭接在PA12,另一頭接GND或者不接GND來實現PA12的這個按鍵功能。

[請點擊閱讀原文觀看代碼]

量測PA4(DAC1_OUT1),PA3(OPAMP_OUT1),通過將PA12接地或者不接地的次數得到如下波形,可以看出,這個時候的放大倍數約為4倍。
但就這個例子來看,運算放大後的波形還是有些失真的。

總結:
1、對於同樣的cortex-M4內核的這個「小個子」MCU來說,它的功能並沒有隨著它的小體積而減少;
2、本來還想玩玩CoreMark的,但是移植成功後,使用串口1來列印,就是不成功。我折騰了下,工程編譯沒有錯誤,但是就是不顯示列印信息我就不拿這個程序出來獻醜了。這個花的時間挺多的,加上天氣熱,弄得我很惱火我自己。
這裡我放出,CoreMark軟體下載連結:CoreMark下載連結(需註冊)

 如何將coremark程序移植到STM32上.pdf 
有興趣的網友玩玩,我後面有空下來再研究下,就是想看看我們測出來跟官方測試出來差異有多大。

3、最近有個項目中,新打樣回來一批板子(5pcs)。其中有3pcs都是剛開始沒什麼問題,用段時間(幾天吧),就發現CPU(STM32F405RGT6)發燙。用數顯的Power Supply看電流最小的有200~300mA,最大的2A左右了。所以就懷疑CPU問題。解焊其中一塊CPU,量測本體3.3V 對 GND阻抗,發現阻抗為0
 
a、購買新的CPU回來後,重新焊接後,量測3.3v對地不短路。重新上電後,過段時間CPU依然發燙(焊接好CPU後,用洗板水擦洗過);
b、拿打樣剩餘的空板,只焊接CPU外圍電路,重新上電,過段時間CPU依然發燙(焊接好CPU後,用洗板水擦洗過);
同樣的,我同事負責的另一個項目中,也是有顆CPU有問題。焊接好CPU後,用洗板水擦洗過板子。發現上電後,CPU部位冒煙了。。。。所以我們一致認為洗板水有問題(是從某寶購買的)。
下周,抽個時間再浪費1pcs(30多塊RMB)驗證下,這次不用洗板水,看看效果。。。。

4、好了言歸正傳的說下這個Nucleo-L432KC的板子,這個板子首款有QFN32的Nucleo-32的板子。所以有點蓋頭換面的意思。當然,雖然沒有太深入的去理解它自帶的OPAMP的功能。但是從介紹中可以看得出,這個是與ADC,和DAC有關係的。最近我同事有個傳感器上就是需要運放,因為如果將那個傳感器的輸出接在ADC上,顯示只有0.8v的信號,這樣用adc採樣的數值就不是很準確了,所以他們最近在使用放大器在設計電路來放大信號。所以如果MCU自帶AMP的話,想必這個外圍電路會相對小一些。
以上,就是我的測評內容,歡迎指正,大牛勿噴。謝謝。

點擊閱讀原文與原作者探討、交流。

歡迎微博@EEWORLD 

如果你也寫過此類原創乾貨請關注微信公眾號:EEWORLD(電子工程世界)回復「投稿」,一經入選,我們將幫你登上頭條! 

與更多行業內網友進行交流請登陸EEWORLD論壇。

相關焦點

  • 超低功耗的STM32L432測評開始啦~僅有5塊,感興趣的趕緊來申請吧!
    大家好,這次又給大家帶來5塊的STM32L432板子進行測評,有興趣的網友趕緊動動你的手指來申請吧~先來看一場STM32L432靚照秀
  • [原創]STM32F469 discovery Kit 測評
    如主界面的最下面,就是在說stm32f469 discovery kit的新聞。三、STM32F469介紹看完了外觀,難免需要介紹下stm32f469了。STM32F469以Flash memory :2M,SRAM:384+4kb的優勢勝出,data bus的位數從stm32f446(16bit data bus)開始也從16bit 升級為32bit。
  • STM32L0晶片FLASH編程示例及提醒
    這裡就STM32L053晶片的FLASH編程做個簡單演示並做些提醒,以供有需要的人參考。
  • 基於stm32L4R9體驗ewebengine
    1.stm32L4r9平臺ST公司的STM32L4R9I是高性能超低功耗MCU系列產品,基於Arm Cortex-M4 32位RISC核,工作頻率高達
  • 新一代超低功耗STM32U5,到底有啥亮點?
    參考地址:https://blog.st.com/stm32u5-microvisor/STM32Lx系列為STM32早期的超低功耗系列MCU,最早的一款STM32L系列為STM32L1,於2009年發布。STM32Lx系列前後推出了STM32L1、 STM32L0、 STM32L4、 STM32L4+、 STM32L5等幾個系列,多種型號的低功耗MCU。
  • STM32CubeMX重大升級
    一些關於STM32CubeMX升級、ST官網的細節問題,不知道大家平時注意了沒有?相信經常使用STM32CubeMX工具的朋友,都知道升級到V5.0.0版本的新聞。其實,經常使用STM32CubeMX工具的朋友可能會關注它版本的更新。
  • 關於STM32Cube的幾個常見問題
    四、STM32Cube HAL庫可以使用中斷或DMA嗎?答:是的。HAL層支持三種 API編程模型:輪詢、中斷和DMA(帶或不帶中斷的產生)。五、有基於相關開發工具鏈的工程例程嗎?答:有的。stm32cube各系列固件包提供了豐富的應用例程。
  • STM32F7開發板自己造
    編譯:/mnt/e/_make_/arm/stm32f746z/test# makearm gcc -c -g -O2 -Wall -mcpu=cortex-m7 -mthumb -DSTM32F746xx -I../../ST -I../../CMSIS test.carm gcc -nostdlib -mcpu=cortex-m7 -mthumb -T ..
  • STM32f103單片機(三)——串口
    在stm32f10x.h中添加函數void UART_TRxOver_Interrupt(void);在stm32f10x.c的串口中斷入口中添加UART_TRxOver_Interrupt();
  • STM32CubeMx入門教程(1)-點亮LED
    「 使用stm32cubeMX 工具進行代碼生成,以LED點燈為例」
  • STM32CubeMX升級至V5.2.0,STM32G4即將推出,STM32CubeIDE正式面世
    官網網址:www.st.com/stm32cubemx百度網盤下載:STM32CubeMX這次STM32CubeMX其實是與STM32CubeIDE配合進行升級,下面重點講講STM32CubeIDE這個集成開發工具。今天,學習STM32的人,大不多都應該聽說了這個STM32CubeIDE工具。
  • STM32F1_外部SRAM作為運行內存
    今天提供的工程是基於前面「TIM延時」的工程修改而來,但是今天的例子是使用ST官方提供的標準庫裡面「system_stm32f10x.c」文件裡面現成的函數接口(使用寄存器配置),使其控制外部SRAM作為運行內存。昨天的工程使用標準庫fsmc相應的函數接口來配置的FSMC,昨天工程的目的就是為了使其大家熟悉參數信息。
  • STM32CubeMX介紹、下載與安裝
    2.微控制器圖形化配置:l 自動處理引腳衝突l 動態設置確定的時鐘樹l 可以動態確定參數設置的外圍和中間件模式和初始化l 功耗預測3.C代碼工程生成器覆蓋了STM32 微控制器初始化編譯軟體,如IAR、KEIL、GCC。4.可獨立使用或作為 Eclipse 插件使用。
  • stm32h7「資源尋找介紹」
    stm32h7開發資源分為開發文檔、軟體包、開發工具。
  • STM32CubeIDE使用入門的幾個常見問題
    2、安裝STM32cubeIde有時總不成功怎麼辦?最常見的問題就是路徑上有中文字符。另外,如果不是首次安裝STM32CUBEIDE的話,記得將之前版本的東西卸載乾淨。3、它支持與圖形化配置工具stm32CubeMx的協調工作否?當然。可以說STM32cubeIde已經將stm32CubeMx作為一個模塊嵌入其開發環境中了。我們在通過CubeIDE新建工程時,會自動調用stm32CubeMx進來,讓用戶進行圖形化初始配置。
  • 被STM32G0快速編程難倒的,看這裡
    在 STM32L4Cube 中的 stm32l4xx_hal_flash,它是這麼定義的:static void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress)而在 STM32G0Cube 中的 stm32g0xx_hal_flash,其定義是:
  • [原創]STM32L476RG Nuleo 評測
    下面從以下幾方面來開始STM32L476RG Nuleo產品評測:系列化晶片和資料概述STM32L476RG晶片介紹STM32L476RG Nuleo板子硬體介紹開發環境之STM32CUBEMX使用開發環境之MDK使用開發環境之 IAR使用開發環境之MBED跑程序低功耗測試
  • 技術筆記-STM32CubeL4 固件庫V1.13.0版的RTC喚醒
    為進一步確認問題,使用另一版本的固件庫的相關例程\STM32Cube_FW_L4_V1.12.0\Projects\NUCLEO-L476RG\Examples\PWR\PWR_STOP2_RTC進行驗證,結果卻發現功能是正常的。難道客戶描述有誤?下載跟客戶相同的STM32CubeL4版本庫,即用STM32Cube_FW_L4_V1.13.0來進行驗證,發現客戶描述的問題確實存在。
  • STM32CubeMX-實時時鐘(RTC)
    點擊STM32F746I.ioc打開STM32cubeMX的工程文件重新配置。RTC選擇內部喚醒(Internal WakeUp)開啟RTC。開啟外部低速晶振,PC14,PC15配置。RTC時鐘選擇為外部低速晶振(LSE),頻率為32.768。在RTC配置中,設置時間和日期,其他為默認設置。此處設置時間為2016/04/16 16:25:49。在rtc.c文件中可以看到ADC初始化函數。
  • STM32CubeMonitor介紹、下載、安裝和使用教程
    先來看下安裝好之後打開的界面:主要特徵:•基於圖形流的編輯器,不需要編程來構建儀錶板•通過ST-LINK (SWD、JTAG協議)連接到任何STM32設備•在目標應用程式運行時,在RAM中實時讀取和寫入變量解析來自應用程式可執行文件的調試信息•直接獲取模式或快照模式