案例一
有工程師提到:MM32F0010 的 PA13 和 PA14 引腳能否設(shè)置成GPIO?如何設(shè)置?
分析原因
PA13PA14 默認(rèn)是 SWD 功能,并且可以設(shè)置成通用 GPIO 或其他復(fù)用功能,需要將 PA13PA14 的 SWD 功能進(jìn)行 disable 才可以實(shí)現(xiàn) GPIO 功能。
解決辦法
設(shè)置方式:
void SWDasGPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE); GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_4); GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_4); GPIO_StructInit( GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14|GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, GPIO_InitStructure); }
案例二
有工程師提到:SWD 復(fù)用成 GPIO 后如何恢復(fù) SWD 功能并進(jìn)行二次下載?
分析原因
PA13PA14被設(shè)置成 GPIO 或者其他復(fù)用功能后,如果需要再次通過(guò) SWD 接口連接目標(biāo) MCU,需要做如下動(dòng)作:
因?yàn)?PA14 被設(shè)置成 GPIO 或者其他復(fù)用功能后, 該 I/O 不再是 SWCLK 功能,但只要進(jìn)入 RESET(內(nèi)部軟件復(fù)位,IWDG 復(fù)位,Standby 喚醒,初始上電等過(guò)程)會(huì)短時(shí)間還會(huì)把該 IO 切換為 SWCLK 功能,直到執(zhí)行 Main Flash 中的把該 Pin(nRST/PA14/SWCLK)功能配置為 GPIO 或 UART1_TXD 后,SWD 接口才會(huì) Disable;
解決辦法 1
可通過(guò) SWD 接口的 PA14和 PA13 輸入 Boot Switch 時(shí)序,切換到 ISP Boot,擦除目標(biāo) MCU 中 Main Flash 空間的程序,可以參考官網(wǎng)AN:《AN0010_MM32F0010_PIN_AF_Mode_Setting_SC》。
資料鏈接:https://www.mindmotion.com.cn/products/mm32mcu/mm32f/mm32f_value_line/mm32f0010/
本次以 MM32-LINK 為例,新建 MM32F0010 的工程后需要設(shè)置芯片鎖定解鎖狀態(tài),設(shè)置功能如下:
a) 當(dāng)編程對(duì)象為 MM32F0010 系列芯片鎖定時(shí)的解鎖狀態(tài)設(shè)定
b) 單擊鼠標(biāo)左鍵彈出對(duì)話框如右圖,設(shè)置解鎖重復(fù)次數(shù)和上電延時(shí)時(shí)間
c) 點(diǎn)擊按鍵[OK]按鍵后狀態(tài)欄顯示“Unlock”
d) 當(dāng)目標(biāo)對(duì)象被解鎖時(shí), 狀態(tài)欄顯示“Normal”
單擊狀態(tài)欄的“Normal”在彈出的對(duì)話框中單擊OK,狀態(tài)欄從 Unlock 跳變到Normal 聽(tīng)到滴兩聲,同時(shí)狀態(tài)欄內(nèi)核識(shí)別指示燈亮黃燈,說(shuō)明解鎖成功,最后單擊 Erase Chip 聽(tīng)到滴一聲解鎖完成,同時(shí)狀態(tài)欄顯示芯片擦除成功,內(nèi)核指示燈跳變成綠燈。
如果解鎖不成功,斷開(kāi)仿真器與目標(biāo)板連接的燒錄線,單擊 Normal,在彈出的對(duì)話框中 Repeat 設(shè)置成500(該值依據(jù)具體情況可靈活修改),然后單擊 OK,仿真器再與目標(biāo)板連接并自動(dòng)解鎖,狀態(tài)欄從Unlock跳變到 Normal 聽(tīng)到滴兩聲,同時(shí)狀態(tài)欄內(nèi)核識(shí)別指示燈亮黃燈,說(shuō)明解鎖成功,最后單擊 Erase Chip 聽(tīng)到滴一聲解鎖完成,同時(shí)狀態(tài)欄顯示芯片擦除成功,內(nèi)核指示燈跳變成綠燈。
解決辦法 2
如果程序中進(jìn)入 main()程序后,需要將 PA13 和 PA14 設(shè)置成 GPIO 功能時(shí),可以預(yù)置較長(zhǎng)時(shí)間的延時(shí)等待(在調(diào)試過(guò)程設(shè)置延時(shí)>10s,量產(chǎn)階段屏蔽延時(shí)),可通過(guò)重新上電 MCU,立刻執(zhí)行 Erase Chip 功能,擦除目標(biāo) MCU 中 Main Flash 空間的程序;
案例三
有工程師提到:使用 MM32-LINK 對(duì) MM32F0010 下載,提示下載失敗?該如何設(shè)置?
分析原因
MM32-LINK 會(huì)通過(guò) Vref 引腳檢查 MCU 的供電電壓,若Vref引腳未連接到主電源上,MM32-LINK 會(huì)認(rèn)為目標(biāo) MCU 未供電且在下載時(shí)彈出相應(yīng)的錯(cuò)誤提示。
解決辦法
硬件接線如下所示:
若 MM32F0010 未獨(dú)立供電,Keil 中需要配置 MM32-LINK 電源輸出,并且取消 Reset 的設(shè)置。
案例四
有工程師提到:MM32F0010 的 ADC 多通道采樣存在串?dāng)_是什么原因?
分析原因
MM32F0010 有 1 個(gè) 12 位模數(shù)轉(zhuǎn)換器,1uS 轉(zhuǎn)換時(shí)間(多達(dá) 8 個(gè)輸入通道),支持單次模式、單周期模式和連續(xù)模式,多通道采樣需要使用單周期或者連續(xù)模式。當(dāng) ADC 的采樣電容在兩個(gè)通道之間進(jìn)行切換時(shí)等效電路如下所示:
兩路信號(hào)源 A 和 B 的電平分別為Ua和Ub,其內(nèi)阻分別是 Ra 和 Rb,其中,Cs 是 ADC 的采樣電容,Rs 是 ADC 的采樣電阻,MM32F0010 的內(nèi)部采樣電容 Cs 為 10pF。
為了簡(jiǎn)化問(wèn)題,假定兩路信號(hào)的掃描次序是由信號(hào)源 B 到信號(hào)源 A,且信號(hào)源 B 接入的時(shí)間足夠長(zhǎng),以至在通道切換時(shí)采樣電容 Cs 上的電壓可以近似的等于 Ub ,于是,在通道切換到信號(hào)源 A 后,采樣電容 Cs 上的電壓將會(huì)隨著時(shí)間進(jìn)行充放電的動(dòng)作,隨著采樣保持時(shí)間t 的增長(zhǎng),采樣電容 Cs 上的電壓逐漸趨近于 Ua ,而其與 Ua 之間的誤差 ?U 即是信號(hào)源 B 通過(guò)采樣電容 Cs 對(duì)信號(hào)源 A 的藕合值,且隨著采樣保持時(shí)間t的增長(zhǎng),該值逐漸減小,最終趨近于零。
解決辦法
在實(shí)際 ADC 轉(zhuǎn)換中,由于 ?U 的值的誤差最終會(huì)反饋在 ADC 最終的轉(zhuǎn)換結(jié)果中,所以有的用戶(hù)反饋轉(zhuǎn)換結(jié)果比實(shí)際結(jié)果存在偏差。我們?cè)趹?yīng)用中避免該問(wèn)題,需要 ?U 的值趨近于 0 才符合實(shí)際的要求。
有種方法可以減小 ?U 的取值:
1. 通過(guò)增加采樣保持時(shí)間 t,使 ?U 獲得更多的衰減時(shí)間;
2. 通過(guò)減小信號(hào)源的內(nèi)阻 Ra,使 ?U 具有更快的衰減速率;
在實(shí)際運(yùn)用時(shí),在增加采樣保持時(shí)間方面可以通過(guò)修改 ADC 的設(shè)置參數(shù)來(lái)實(shí)現(xiàn)(通過(guò)調(diào)整 ADC 采樣率和 ADC 的采樣周期),而在降低信號(hào)源內(nèi)阻方面可以通過(guò)在信號(hào)源與 ADC 之間加入跟隨器進(jìn)行隔離來(lái)實(shí)現(xiàn)。
案例五
有工程師提到:MM32F0010 功耗水平是多少?如何降低整機(jī)功耗?
分析原因
芯片有三種低功耗模式:
睡眠模式 (CPU 停止,所有外設(shè)包括 CPU 的外設(shè),如 NVIC、系統(tǒng)時(shí)鐘 (SysTick) 等仍在運(yùn)行)
停機(jī)模式 (所有的時(shí)鐘都已停止,寄存器和 SRAM 的內(nèi)容依然保存)
待機(jī)模式 (內(nèi)核電源關(guān)閉,寄存器和 SRAM 的內(nèi)容全部丟失)
低功耗一覽表:
低功耗模式供應(yīng)電流:
解決辦法
在系統(tǒng)或電源復(fù)位以后,微控制器處于運(yùn)行狀態(tài)。當(dāng) CPU 不需繼續(xù)運(yùn)行時(shí),可以利用多種低功耗模式來(lái)節(jié)省功耗,例如等待某個(gè)外部事件時(shí)。用戶(hù)需要根據(jù)最低電源消耗、最快速啟動(dòng)時(shí)間和可用的喚醒源等條件,選定一個(gè)最佳的低功耗模式。
在運(yùn)行模式下,可以通過(guò)以下方式中的一種降低功耗:
● 降低系統(tǒng)時(shí)鐘頻率
● 關(guān)閉 APB 和 AHB 總線上未被使用的外設(shè)時(shí)鐘
案例六
有工程師提到:MM32F0010 進(jìn)入 STOP 模式后無(wú)法通過(guò)串口喚醒 ?
分析原因
MM32F0010 沒(méi)有 LPUART,進(jìn)入 STOP 模式后不能直接通過(guò) UART 直接喚醒,只能通過(guò) EXTI 外部中斷方式喚醒。
解決辦法
我們可以在 MCU 進(jìn)入 STOP 前將 RX 腳設(shè)為 EXTI 模式,并使能對(duì)應(yīng)的中斷來(lái)實(shí)現(xiàn)。
案例七
有工程師提到:MM32F0010 進(jìn)入低功耗之后,實(shí)際功耗遠(yuǎn)大于理想功耗,是什么原因?
分析原因
MCU 在進(jìn)入 STOP 模式的時(shí)候,GPIO 的狀態(tài)都是保持在進(jìn)入低功耗模式之前的狀態(tài)。當(dāng)連接到外設(shè)后,外設(shè)的電平狀態(tài)和所連接的 GPIO 不一致的時(shí)候,就會(huì)產(chǎn)生電流消耗,這個(gè)就是很多用戶(hù)實(shí)際測(cè)試過(guò)程中發(fā)現(xiàn)功耗大于手冊(cè)中的功耗。
解決辦法
1、進(jìn)入低功耗之前,對(duì)使用和未使用IO狀態(tài)進(jìn)行調(diào)整,比如有外部上拉,可配置成模擬輸入等。
2、關(guān)閉外設(shè)時(shí)鐘,例如 ADC、UART 等外設(shè)時(shí)鐘進(jìn)行關(guān)閉。
案例八
有工程師提到:通過(guò)按鍵喚醒 MM32F0010,串口不能正常工作?
分析原因
經(jīng)分析發(fā)現(xiàn),開(kāi)發(fā)者進(jìn)入的低功耗模式為停機(jī)模式,喚醒之后,未初始化串口外設(shè),導(dǎo)致串口不能正常工作。
解決辦法
喚醒 MM32F0010 之后,重新初始化串口(以及所有使用的)外設(shè)。
案例九
有工程師提到:進(jìn)入低功耗后無(wú)法使用調(diào)試器二次下載是什么原因?
分析原因
由于進(jìn)入低功耗后會(huì)關(guān)閉 SWD 的電源域,所以無(wú)法二次下載。
解決辦法
● 在程序中需要設(shè)置正確的喚醒源,對(duì) MCU 喚醒后才能進(jìn)行下載。
● 可以參考問(wèn)題2中的解決辦法對(duì) MCU 內(nèi)部的程序進(jìn)行擦除。
來(lái)源:靈動(dòng)MM32MCU
-
芯片
+關(guān)注
關(guān)注
452文章
50222瀏覽量
420972 -
mcu
+關(guān)注
關(guān)注
146文章
16899瀏覽量
349933 -
GPIO
+關(guān)注
關(guān)注
16文章
1189瀏覽量
51839 -
SWD
+關(guān)注
關(guān)注
1文章
56瀏覽量
11796
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論