<dl id="zdxnv"><sup id="zdxnv"></sup></dl>
<tbody id="zdxnv"><nobr id="zdxnv"></nobr></tbody>

<menuitem id="zdxnv"><ins id="zdxnv"></ins></menuitem>
    <menuitem id="zdxnv"></menuitem>
      1. <tbody id="zdxnv"><bdo id="zdxnv"></bdo></tbody>
        <progress id="zdxnv"></progress>
      2. <progress id="zdxnv"></progress>
      3. 國民技術

        代理品牌

        國民技術N32G43X/L40X/L43X系列單片機FAQ集錦-代理商技術支持、正品現貨

        國民技術N32G43X/L40X/L43X系列單片機FAQ集錦-代理商技術支持、正品現貨

        產品分類:國民技術

        • 產品說明
        國民技術N32G43X/L40X/L43X系列單片機FAQ集錦

        本文檔主要統計了國民技術 N32G43x/L40x/l43x 系列 32 位 通用安全 MCU 在使用過程中用戶常見的疑問點或容易出錯的功能,并對這些問題給出了解答;目的在于降低用戶在開發過程中的難度,提高開發效率。文檔內容按照外設模塊劃分,采用一問一答的形式針對每個具體的問題作答,某些問題可能涉及到其他的參考文檔,在回答中會標注相關文檔的名稱,檔資料請聯系國民技術代理商深圳市綠都電子有限公司索取,聯絡電話:0755-83777479,18688790400(微信同號)。

        1.1 TIM
        Q1:在用 TIM1 輸出 PWM 的時候失敗

        高級定時器在輸出 PWM 時,需要額外使能一項:TIM_EnableCtrlPwmOutputs(TIM1,ENABLE);

        Q2:在配置 LPTIM 的時候進不去中斷函數

        LPTIM 配置中斷的時候有點特殊,需要額外配置使能 EXTI 的 LINE24,因為這個 LINE24 是內部連接到LPTIM 喚醒中斷的。詳情可看用戶手冊的 6.2 章節以及參考相關例程

        Q3:TIM 初始化時配置分頻之后不起作用

        檢查后續有無誤操作到修改了分頻的操作,大概率是后續的初始化中調用到了 TIM_ConfigPrescaler 函數導致分頻重新配置成了其它參數

        Q4:有時候在使能溢出中斷以及定時器之后就會馬上進一次中斷(此時 TIM_CNT 還沒溢出)

        在使能 TIM 中斷之前,建議先調用 TIM_ClearFlag 函數清除一次中斷,然后再使能中斷和定時器

        1.2 LPTIM

        Q1:LPTIM 無法進入中斷函數

        LPTIM 鏈接了外部中斷 EXTI_LINE24(可翻閱用戶手冊 6.2.4 章節),在配置 LPTIM 中斷的同時,也需要配置 EXTI_LINE24

        1.3 LCD

        Q1:在低溫下啟動時,LCD 顯示內容異常緩慢以及有拖影現象

        顯示緩慢:關閉死區時間,并使能高驅動能力電壓輸出可有效緩解該異?,F象。拖影現象:可適當降低刷新率來解決。

        1.4 ADC

        Q1:ADC 如何使用內部 2.048V 基準做參考源?

        在 ADC 初始化前面加上:(*((uint32_t*)(0x40001800+0x24))) |= 3<<19;把這兩個 bit 置 1,分別是表示打開 2.048v 開關以及將其作為 VREF 基準源。

        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 搬運多個通道時數據異常

        在改為多通道傳輸時,需要注意一下幾點的配置:ADC 是否改為掃描模式、DMA 的 MemAddr 數組長度是否滿足 ADC 通道數量、是否已開啟 MEM 偏移、搬運長度是否與 ADC 通道數量一致

        Q3:ADC+DMA 搬運通道錯亂或者 ADC 死機如何解決?

        在相關文件開頭添加宏定義:#define ADCIP_CTRL (*(uint32_t*)(0x40020800+0x60))并配置該寄存器:ADCIP_CTRL = 0x28;(該配置語句放在 ADC 模塊使能之前)

        Q4:ADC 1M 時鐘源用的是 HSE,操作完 Flash 之后關閉 HSI 時鐘為什么會導致后續的 ADC 初始化失???片復位運行時,HSI 默認是關閉的,且 ADC_1MCLK 時鐘源默認為 HSI;此時配置 ADC_1MCLK 時鐘源為

        HSE 可正常以切換。但如果先開啟 HSI(用于 flash 之類的)再關閉,此時 ADC_1MCLK 時鐘源想要配置為 HSE 必須在 HSI 打開時才能切換成功。否則后續 ADC 初始化異常(ADC_1MCLK 時鐘異常,ADC 就緒標志無法置位)。建議將 ADC 模塊的初始化放在其它可能涉及到開關 HSI 時鐘模塊的前面。

        1.5 PWR

        Q1:從 LP RUN/LP SLEEP/STOP2 模式退出到 RUN 后串口打印異常

        退出之后,需要對系統時鐘重新初始化,如果前后兩次主頻的初始化不一致,還額外需要初始化外設,否則只需重新配置時鐘

        Q2:N32G43x 以及 N32L4xx 系列做替換時沒有 VBAT 腳,怎么接備用電源

        芯片不支持接備用電源

        Q3:在測試 STOP2 低功耗模式時程序燒錄失敗

        在進入 STOP2 模式之后 SWD 口默認已經關閉了,導致燒錄不了??梢酝ㄟ^拉高 BOOT0 管腳的方式切回BOOT 狀態下擦除 FLASH 再回到用戶模式重新燒錄。后續在做類似測試時可以使能低功耗下調試功能:DBG_ConfigPeriph(DBG_STOP, ENABLE); 或者在進入低功耗模式前延時一段時間(比如 1s),后續燒錄新的工程可以利用這個延時完成燒錄,無需每次都切換

        BOOT。

        Q4:RTC 喚醒 STOP2 異常

        查看 RTC 的時鐘源是否為 HSE,因為在 STOP2 模式下 HSE 是關閉狀態,可改為 LSE 或 LSI。

        Q5:修改喚醒腳之后,發現之前配置過的喚醒腳也可以喚醒

        未掉電的情況下,上一次配置的 WKUP 腳會保持生效,在重新配置新的 WKUP 腳的同時,還需要重新關閉上一次 WKUP 的配置使能。

        Q6:在 STOP2 模式下 Debug,調試到 WFI()休眠處再進行下一步時,會進入到 HardFault 中

        調試過程中不要因為打斷點,或沒有觸發喚醒時停止全速運行而導致指令停在進低功耗函數中的 WFI()處,然后會導致進 HardFault

        Q7:測試 STOP2 功耗與手冊上描述的不符

        一般是由于板子有漏電引起的功耗偏高,比如有些特殊引腳默認是高電平或者低電平(詳情可翻閱用戶手冊的 5.2.2 章節),導致該引腳連接的電路有漏電產生

        Q8:低功耗模式下 IO 口怎么配置可以進一步降低功耗

        主要是避免漏電流的產生,可以直接將引腳配置成模擬輸入(注意不是浮空輸入)Q9:STOP2 模式喚醒之后,調用系統初始化函數 SystemInit()會導致 LPTIM 工作異常SystemInit 函數會復位 LPTIM 的時鐘,不建議直接調用該函數做系統的重新初始化,可以參考 STOP2 例程中 SetSysClockToPLL 函數來重新配置系統時鐘

        1.6 BOOT

        Q1:BOOT0 引腳拉高之后用 NZDownloadTools 上位機還是識別不到芯片

        從以下幾點去排查原因:

        1、拉高之后需要重新上電復位,芯片才能識別到 BOOT0 腳的變化從而進入 BOOT 模式

        2、排查 USART(僅限 PA9 PA10)或者 USB 接口的接觸是否正常

        Q2:IAP 升級完之后程序運行異常,卡在死循環中

        boot 程序升級完成之后,在跳轉的 APP 前,把 boot 中用到的中斷悉數關閉。建議逐個關閉,而不是直接調用__NVIC_DisableIRQ 函數

        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 打印數據異常

        開發板上的 PA9 PA10 有用跳帽連接了 NSLINK 芯片,在外接 USB 轉串口模塊時需要把這兩個相應的跳帽拔掉

        Q2:串口 2 跑 2M 波特率不行

        USART2 掛在 APB1 總線上,總線頻率最高不超過 27M。波特率計算公式為:TX/RX 波特率 =FAPB1 /(16 ?USARTDIV)。所以肯定是沒有 2M 的。

        Q3:串口沒有使能溢出中斷,但相應的標志位會置位

        在使能了接收中斷之后,溢出中斷就自動使能了。所以在串口中斷函數里面需要注意溢出中斷的處理(溢出中斷清除步驟:先讀取 STS 寄存器,再讀取 DAT 寄存器)

        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 口調試異常

        GPIO 口復位函數會關閉時鐘,導致調試斷開,建議在調試時屏蔽該調用或者用其他方式看現象

        Q5:模擬 I2C 或者模擬 SPI,如何提高 IO 效率

        采用寄存器操作方式以及使用位帶操作

        Q6:N32L406 的 PD14、PD15 能否作為普通 IO 口輸出?如何配置?

        根據用戶手冊 5.2.5.3 章節,HSE 的 OSC_IN 和 OSC_OUT 分別映射到 PD14 和 PD15,如果 HSE 關閉,相應引腳可以用作 GPIO,如果 HSE 開啟,相應引腳進入模擬模式并繞開 GPIO 配置;LSE 同理;但需要注意的是當 HSE 作為系統時鐘時 HSEEN 位不能被清零(即 HSE 不能被軟件關閉),所以如果要使用 PD14 和 PD15,首先要在 system.c 文件中設置系統時鐘為非 HSE 的其他時鐘源,再通過軟件 RCC_CofigHse();函數關閉 HSE,最后把 PD14 和 PD15 配置為普通 IO 口,即可調用函數輸出高低電平

        1.11 DMA

        Q1:DMA 的中斷號和 DMA 通道是什么關系

        同一個外設會有多個中斷請求號,但在同一時刻,DMA 的一個通道只能選擇其中一個響應。

        Q2:在做 DMA 不定數據搬運時,DMA 長度配置了之后沒有生效

        在重新修改 DMA 長度參數時,需要先關閉掉 DMA 使能,再進行配置,配置完之后重新打開使能。1.12 FLASH

        Q1:flash 操作失敗可能是什么原因導致

        該系列芯片在操作 FLASH 之前需要先初始化 HSI 時鐘以及需等待 HSI 震蕩就緒,建議參考開發套件中的例程,沿用 SDK 中已封裝好的 flash 時鐘初始化函數:FLASH_ClockInit()

        Q2:Flash 如何用字節形式進行寫操作

        沒有單字節操作的方式,需要改換成 word 操作方式或者用 FLASH 模擬 E2 的方式來實現單個字節操作

        1.13 NVIC

        Q1:配置了中斷函數但沒有進中斷,反而卡在死循環

        先查看 NVIC 配置,以及中斷函數入口(即中斷函數名有沒有寫錯,可以在啟動文件中查看相應函數名)

        1.14 SPI

        Q1:以配置 SPI1、2 同樣的方式配置 SPI3 工作異常

        SPI3 有幾個復用引腳默認是做燒錄口用的,需要先關閉燒錄口的復用才能做 SPI3 用

        Q2:在配置為某些頻系數的下,SPI 片選腳會先于 SCK 拉高,即時鐘線還沒走完,CS 就已經拉高了在傳輸數據時,可以先等待 SPI 總線不繁忙再返回數據,另外 SPI 總線判斷不繁忙的依據跟 SPI 配置第一
        還是第二邊沿采樣有關, 如果是第一邊沿采樣,有可能是在 SCK 上升沿之后不久還沒到下降沿此時 CS 就會拉高。

        1.15 PWM

        Q1:用開發板 PA10 引腳輸出 PWM 波形有偏置電壓

        需要把連接到虛擬串口的跳帽斷開1.16 RCC

        Q1:如何修改的主頻和時鐘源

        修改時鐘源在 system_n32xxx.c 中,通過修改 SYSCLK_SRC 宏定義的變量,即對應不同的時鐘源;通過修改 SYSCLK_FREQ 宏定義來設置系統主頻。在 n32xxx.h 中,通過修改 HSE_VALUE 的定義,來修改外部晶振參數。

        1.17 CAN

        Q1:CAN 上電會有一段不規則電平產生,導致總線上其它設備識別錯誤

        可以加兩個上拉電阻以及先配置 CAN 模塊參數再配置 CAN 的 IO 口

        1.18 門狗

        Q1:在進低功耗狀態下,如何關閉 IWDG

        IWDG 無法被關閉,哪怕是關掉中斷使能,在第二次開啟的時候也會進入到之前觸發的中斷里面,所以最好用到低功耗模式時采用 WWDG,WWDG 可以隨時關閉

        Q2:在執行耗時操作或者低功耗休眠時,芯片會重啟

        可能是看門狗造成的,根據耗時時間來合理配置 IWDG 復位時間;如果是低功耗休眠,可配置定時喚醒去喂狗

        1.19 其他

        Q1:debug 模式下工程異常

        工程中包含了中文路徑,Keil 對此兼容性不高。需要修改成純英文路徑

        Q2:燒錄報錯,Error:Flash Download failed - Could not load file xxx.axf

        沒有編譯,導致沒有生成可執行文件。此時需要先編譯

        Q3:直接編譯 SDK 中的工程報錯,找不到標準庫文件

        是由于 SDK 中包含了中文路徑導致,將整個 SDK 放在一個純英文路徑下即可Q4:編譯工程報錯“找不到 stdio.h”環境問題,需要在系統環境變量中加入 keil 自帶的庫文件,一般會在安裝路徑下的\ARM\ARMCC\include

        中。新增一個系統環境變量,將該路徑包含即可。


        Q5:板子不時復位

        如果程序中添加了看門狗,需要關注喂狗是否及時;此外硬件復位電路不要懸空,可參考開發套件中的硬件設計指南

        Q6:EIL 里面JLINK 燒錄時彈出如下類似框圖



        該系列芯片的內核為 Cortex-M4F,選擇一個未指定的 M4 核即可,如下:

        Q7:初始化外設程序不同位置導致現象不一致

        一般出現這種情況都是在配置結構體參數時,因為沒有用到某些功能所以沒有去完整配置全部參數導致的,且結構體變量時定義為了局部變量??梢栽诔跏蓟罢{用相應函數初始化一下結構體,比如在配置
        GPIO 口時,定義結構體為: GPIO_InitType GPIO_InitStructure;在配置 GPIO_InitStructure 的結構體成員的參數前調用 GPIO_InitStruct(&GPIO_InitStructure);初始化一遍結構體即可。

        Q8:程序跑進 assert_failed

        一般是函數傳參不匹配導致,可在 assert_failed 函數里面添加如下打印函數即可定位到哪里的配置出了錯:printf("Wrong parameters value: file %s on line %d\r\n", file, line);

        Q9:芯片首次失敗

        可以切回 BOOT 狀態,然后擦除 FLASH 內容,之后即可正常燒錄

        Q10:UCID/UID 獲取異常

        建議統一用標準庫的 API 來獲?。簐oid GetUCID(uint8_t *UCIDbuf) / void GetUID(uint8_t *UIDbuf)

        Q11:JFLASH 識別片信息異常

        通常是配置 JLINK 的 xml 文件錯誤引起的,需要注意在復制 Nationstech-JLinkDevices.xml 文件的配置內容時不要復制頭尾的</DataBase>

        Q12:軟件方式讀保護等級沒有生效

        需要配合 flash 解鎖和上鎖函數使用,在配置讀保護之前先解鎖 flash,配置之后上鎖并復位

        Q13:在沒有開啟保護的情況下,燒錄以及調試失敗,但調試工具是可以識別得到芯片的

        查看 FLM 文件,沒有選中或者是選擇型號錯誤

        Q14:燒錄器能到芯片且 Flash 可以擦除,但燒錄失敗,報錯信息:Flash Download failed - "CoretxM4"
        大概率是開啟的讀保護功能導致,可以用 Nations MCU Download Tool 工具,通過串口或者 USB 解鎖讀保護(這兩種方式需要切 boot),或者通過 SWD 接口解鎖讀保護(SWD 方式不需要切 boot)
        (該操作只有解鎖 L1 等級可行,L2 不可恢復)
        如果您在使用國民技術MCU時遇到技術方面的疑問,請聯絡國民技術代理商深圳市綠都電子有限公司FAE支持,聯絡電話:0755-83777479,18688790400,philip.yf@szlvdu.com.


        无码专区—VA亚洲V天堂麻豆|亚洲欧美综合一区二区|日韩V精品v无码一区二区|国产精品亚洲精品日韩已满
        <dl id="zdxnv"><sup id="zdxnv"></sup></dl>
        <tbody id="zdxnv"><nobr id="zdxnv"></nobr></tbody>

        <menuitem id="zdxnv"><ins id="zdxnv"></ins></menuitem>
          <menuitem id="zdxnv"></menuitem>
            1. <tbody id="zdxnv"><bdo id="zdxnv"></bdo></tbody>
              <progress id="zdxnv"></progress>
            2. <progress id="zdxnv"></progress>