STM32L011 PA6 空片時(shí)端口狀態(tài)
客戶反映 STM32L011 PA6 空片時(shí)進(jìn)入 system memory 內(nèi)部自帶的 bootloader后,GPIO 的實(shí)際測(cè)試狀態(tài)同 AN2606 中描述 push-pull pull-down 有出入,實(shí)際測(cè)試為高電平。
問(wèn)題分析
查看 AN2606 手冊(cè),發(fā)現(xiàn) PA6 配置為 SPI 模式,GPIO 的配置為 push-pull pulldown 模式。
測(cè)試結(jié)果
SPI 腳位的電平是由于 SPI 協(xié)議決定的:
SPI 通信通過(guò) CPOL(時(shí)鐘極性)和 CPHA(時(shí)鐘相位)來(lái)控制 SPI 設(shè)備的通信模式,具體如下:
時(shí)鐘極性(CPOL)定義了 SCLK 時(shí)鐘線空閑狀態(tài)時(shí)的電平:
1.CPOL=0,即 SCLK=0,表示 SCLK 時(shí)鐘信號(hào)線在空閑狀態(tài)時(shí)的電平為低電平,因此有效狀態(tài)為高電平。
2.CPOL=1,即 SCLK=1,表示 SCLK 時(shí)鐘信號(hào)線在空閑狀態(tài)時(shí)的電平為高電平,因此有效狀態(tài)為低電平。
結(jié)論
GPIO 寄存器配置是對(duì)的,由于它的上拉或下拉是弱上拉或弱下拉,GPIO 口外部測(cè)得的電平是由 SPI 寄存器配置和將要發(fā)送到總線上的數(shù)據(jù)(針對(duì) SPI_CR1. CPOL= 0,SPI_CR1. CPHA =0)來(lái)決定的。
不要盲目參考 AN2606 中的 GPIOA PA6 pull-pull pull-down, 以為 MISO 默認(rèn)電平為 0 電平。還要參考 SPI 協(xié)議和 AN4286 中的 SPI bootloader 協(xié)議。
在 STM32L011 ISP 方式,系統(tǒng)內(nèi)部自帶的 bootloader 代碼配置如下:
SPI_CR1. CPOL= 0, SPI_CR1. CPHA =0, 這種情況下,PA6 腳位腳位空閑狀態(tài)是1 電平(0xA5 等待發(fā)送中)。(芯片內(nèi)的 bootloader 代碼的配置)