STM8系列MCU的很多管腳往往具有復(fù)用功能,在芯片的數(shù)據(jù)手冊上也有詳細(xì)介紹。但有些人,尤其新手對(duì)其標(biāo)注看得不清或看得不細(xì)致,而給自己的開發(fā)工作帶來不必要的苦楚。總時(shí)不時(shí)的有人因?yàn)楣苣_的識(shí)讀理解及AFR功能而在開發(fā)過程中走些彎路。這里以一個(gè)案例來拋磚引玉似的簡單介紹下。
某客戶使用8S003F3的SPI做從機(jī)跟另外的主機(jī)通信。發(fā)現(xiàn)使用NSS的軟件配置功能時(shí)沒問題,一切正常。而當(dāng)使用8S003的SPI的NSS硬件管理模式時(shí)卻不能通信。
我們先看下STM8S003f3的管腳圖:
當(dāng)8s003f3的SPI片選腳NSS使用軟件管理模式時(shí)跟外部引腳是沒關(guān)系的,只有當(dāng)NSS使用硬件管理模式時(shí)才跟具體的管腳有關(guān)。現(xiàn)在情況是,當(dāng)用NSS的軟件管理模式時(shí)通信正常,使用硬件管理模式時(shí)通信失敗,客戶使用的PC7 、PC6、PC5、PA3四根線做SPI通信,其中他把PA3做NSS配置腳。
遺憾的是,他沒有注意到PA3的NSS功能,并非它的默認(rèn)復(fù)用功能,須通過管腳重映射實(shí)現(xiàn),此時(shí)要設(shè)置相應(yīng)的OPTION項(xiàng)的AFR寄存器位。這里他只是簡單地把該腳當(dāng)做一個(gè)GPIO跟主機(jī)的控制口連接起來,自然此時(shí)NSS腳無法進(jìn)入受控狀態(tài),通信失敗也就不難理解了。【下圖是芯片數(shù)據(jù)手冊里關(guān)于PA3管腳的詳細(xì)說明】


所以要想正確使用這個(gè)NSS腳【PA3】,就得對(duì)AFR1進(jìn)行配置,至于怎么配置,可以直接進(jìn)行OPTION編程,也可借助其它工具比如STVP進(jìn)行配置。
其實(shí)細(xì)心的人就會(huì)看到,對(duì)于上圖芯片的管腳標(biāo)注,有很多旁邊標(biāo)了的內(nèi)容用方括號(hào)【xxyz】括起來的,這點(diǎn)手冊上也說明了。
該句意思是說,方括號(hào)【】內(nèi)標(biāo)注的功能乃復(fù)用功能的重映射可選項(xiàng)。(如果一種復(fù)用功能被標(biāo)注2次,他們是2選1的互斥項(xiàng),
不表示同時(shí)具備某一功能。)比方以上圖中的TIM2_CH3為例,在PD2、PA3兩個(gè)地方都有標(biāo)注,但并不代表2個(gè)地方可以同時(shí)作為TIM2_CH3,只能二選一,具體選擇結(jié)合你的實(shí)際應(yīng)用。
關(guān)于復(fù)用功能重映射內(nèi)容,在芯片的手冊的可選項(xiàng)字節(jié)【OPTION BYTES】那里有詳細(xì)描述。
當(dāng)然,因?yàn)楣苣_識(shí)讀和復(fù)用功能的處理而出錯(cuò),在STM32應(yīng)用中也很多。不過還好,現(xiàn)在STM32CUBE工具的使用,會(huì)讓STM32
用戶大大減少因?yàn)楣苣_功能安排失誤導(dǎo)致困擾這方面的問題。