本文檔主要統計了國民技術 N32G43x/L40x/l43x 系列 32 位 通用安全 MCU 在使用過程中用戶常見的疑問點或容易出錯的功能,并對這些問題給出了解答;目的在于降低用戶在開發過程中的難度,提高開發效率。文檔內容按照外設模塊劃分,采用一問一答的形式針對每個具體的問題作答,某些問題可能涉及到其他的參考文檔,在回答中會標注相關文檔的名稱,文檔資料請聯系國民技術代理商深圳市綠都電子有限公司索取,聯絡電話:0755-83777479,18688790400(微信同號)。
高級定時器在輸出 PWM 時,需要額外使能一項:TIM_EnableCtrlPwmOutputs(TIM1,ENABLE);
Q2:在配置 LPTIM 的時候進不去中斷函數
Q3:TIM 初始化時配置分頻之后不起作用
Q4:有時候在使能溢出中斷以及定時器之后就會馬上進一次中斷(此時 TIM_CNT 還沒溢出)
在使能 TIM 中斷之前,建議先調用 TIM_ClearFlag 函數清除一次中斷,然后再使能中斷和定時器
Q1:LPTIM 無法進入中斷函數
1.3 LCD
Q1:在低溫下啟動時,LCD 顯示內容異常緩慢以及有拖影現象
顯示緩慢:關閉死區時間,并使能高驅動能力電壓輸出可有效緩解該異?,F象。拖影現象:可適當降低刷新率來解決。
1.4 ADC
Q1:ADC 如何使用內部 2.048V 基準做參考源?
Q2:ADC 初始化配置不通過,卡在等待 ADC 初始化完成函數那里
ADC 時鐘初始化需要格外注意兩個地方:ADC_1MCLK 時鐘的來源以及分頻。ADC_1MCLK 用于內部計時功能,頻率大小必須配置成 1M,時鐘來源可以是 HSE 或 HSI。通過 RCC_ConfigAdc1mClk 函數的配置來選擇ADC_1MCLK 時鐘來源于 HSE 還是 HSI,以及分頻系數。假如選擇用 HSI 作為 ADC_1MCLK 的時鐘源,由于該系列的 HSI 為 16M,所以此時函數配置應該是:RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSI, RCC_ADC1MCLK_DIV16);假如選擇用 HSE,則需要根據 HSE 的參數來做分頻,比如 HSE 采用 8MHz 的,則需要 8 分頻:RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV8);是 12M 則需要 12 分頻,以此類推。
Q3:ADC DMA 搬運多個通道時數據異常
Q3:ADC+DMA 搬運通道錯亂或者 ADC 死機如何解決?
在相關文件開頭添加宏定義:#define ADCIP_CTRL (*(uint32_t*)(0x40020800+0x60))并配置該寄存器:ADCIP_CTRL = 0x28;(該配置語句放在 ADC 模塊使能之前)
HSE 可正常以切換。但如果先開啟 HSI(用于 flash 之類的)再關閉,此時 ADC_1MCLK 時鐘源想要配置為 HSE 必須在 HSI 打開時才能切換成功。否則后續 ADC 初始化異常(ADC_1MCLK 時鐘異常,ADC 就緒標志無法置位)。建議將 ADC 模塊的初始化放在其它可能涉及到開關 HSI 時鐘模塊的前面。
Q1:從 LP RUN/LP SLEEP/STOP2 模式退出到 RUN 模式后串口打印異常
Q2:N32G43x 以及 N32L4xx 系列做替換時沒有 VBAT 腳,怎么接備用電源
芯片不支持接備用電源
Q3:在測試 STOP2 低功耗模式時程序燒錄失敗
BOOT。
Q4:RTC 喚醒 STOP2 異常
Q5:修改喚醒腳之后,發現之前配置過的喚醒腳也可以喚醒
未掉電的情況下,上一次配置的 WKUP 腳會保持生效,在重新配置新的 WKUP 腳的同時,還需要重新關閉上一次 WKUP 的配置使能。
Q6:在 STOP2 模式下 Debug,調試到 WFI()休眠處再進行下一步時,會進入到 HardFault 中
Q7:測試 STOP2 功耗與手冊上描述的不符
Q8:低功耗模式下 IO 口怎么配置可以進一步降低功耗
1.6 BOOT
從以下幾點去排查原因:
2、排查 USART(僅限 PA9 PA10)或者 USB 接口的接觸是否正常
Q2:IAP 升級完之后程序運行異常,卡在死循環中
1.7 RTC
Q1:RTC 在用 RTC_SetWakeUpCounter 函數配置喚醒時間的時候為什么需要重新上電才會生效
在重新修改喚醒時間之前,需要先關閉 RTC 喚醒使能,即調用 RTC_EnableWakeUp(DISABLE);
Q2:RTC 用 LSE 作為時鐘源,在低溫測試下 RTC 會停止工作(未超出 LSE 溫度范圍)低溫環境中(比如-20℃以下),需要增強 LSE 驅動能力或者對晶振型號做調整,詳情可以參閱套件資料中的使用指南《UG_N32G43X & N32L40X & N32L43X 系列 MCU LSE 晶體選型指南 V1.0.pdf》
1.8 USART
Q1:用開發板測試串口 1 PA9 PA10 打印數據異常
Q2:串口 2 跑 2M 波特率不行
Q3:串口沒有使能溢出中斷,但相應的標志位會置位
1.9 LPUART
Q1:LPUART 如何配置空閑中斷
在 LPUART 中沒有硬件空閑中斷,需要用軟件方式模擬。比如每隔 100ms 判斷一次當前串口長度與上一次的長度有無變化,如果沒有變化,則說明數據已接收完成
1.10 GPIO
Q1:在同個 IO 口可復用多個外設功能時,應該依據什么來配置哪個復用
以 TIM 通道為例:
在用戶手冊的 5.2.5 章節有對各個復用的詳細說明
Q2:在用 PB3 做 LCD 功能的 SEG7 時,上電會有個過沖電平,導致屏幕顯示閃爍了一下
PB3 在上電復位之后狀態為推挽輸出無上下拉,所以該過沖的確存在,可以在進 main 函數之前,執行SystemInit 函數時配置一下 PB3 為輸出上拉模式,如下:
Q3:JTAG 復用失敗
在復用之前需要先開啟 AFIO 時鐘,否則復用不生效
Q4:低功耗模式喚醒之后,調用 GPIO 口復位函數的操作會導致 SWD 口調試異常
Q5:模擬 I2C 或者模擬 SPI,如何提高 IO 效率
采用寄存器操作方式以及使用位帶操作
Q6:N32L406 的 PD14、PD15 能否作為普通 IO 口輸出?如何配置?
1.11 DMA
Q1:DMA 的中斷請求號和 DMA 通道是什么關系
Q2:在做 DMA 不定長數據搬運時,DMA 長度配置了之后沒有生效
Q1:flash 操作失敗可能是什么原因導致
Q2:Flash 如何用字節形式進行寫操作
1.13 NVIC
先查看 NVIC 配置,以及中斷函數入口(即中斷函數名有沒有寫錯,可以在啟動文件中查看相應函數名)
Q1:以配置 SPI1、2 同樣的方式配置 SPI3 工作異常
SPI3 有幾個復用引腳默認是做燒錄口用的,需要先關閉燒錄口的復用才能做 SPI3 用
1.15 PWM
需要把連接到虛擬串口的跳帽斷開1.16 RCC
修改時鐘源在 system_n32xxx.c 中,通過修改 SYSCLK_SRC 宏定義的變量,即對應不同的時鐘源;通過修改 SYSCLK_FREQ 宏定義來設置系統主頻。在 n32xxx.h 中,通過修改 HSE_VALUE 的定義,來修改外部晶振參數。
1.17 CAN
可以加兩個上拉電阻以及先配置 CAN 模塊參數再配置 CAN 的 IO 口
1.18 看門狗
Q1:在進低功耗狀態下,如何關閉 IWDG
Q2:在執行一些耗時操作或者低功耗休眠時,芯片會重啟
1.19 其他
Q1:debug 模式下工程異常
工程中包含了中文路徑,Keil 對此兼容性不高。需要修改成純英文路徑
沒有編譯,導致沒有生成可執行文件。此時需要先編譯
Q3:直接編譯 SDK 中的工程報錯,找不到標準庫文件
中。新增一個系統環境變量,將該路徑包含即可。
Q5:板子不時會復位
Q6:EIL 里面用 JLINK 燒錄時彈出如下類似框圖
Q7:初始化外設程序放在不同位置導致現象不一致
Q8:程序跑進 assert_failed
Q9:芯片首次燒錄失敗
Q10:UCID/UID 的獲取異常
Q11:JFLASH 識別芯片信息異常
Q12:軟件方式配置讀保護等級沒有生效
需要配合 flash 解鎖和上鎖函數使用,在配置讀保護之前先解鎖 flash,配置之后上鎖并復位
查看 FLM 文件,沒有選中或者是選擇型號錯誤
Tel:0755-83777479
Fax:0755-83777485
Email:philip.yf@szlvdu.com
Share: