新聞中心

STM32系列之SPI_NSS的理解

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
之前也是對(duì)SPI的NSS一頭霧水,看其他手冊(cè)上說(shuō)的NSS就是片選信號(hào)。大多數(shù)的SPI從機(jī)的片選有效為低電平,當(dāng)某一從機(jī)的NSS引腳為低電平時(shí),該機(jī)被選中,就可以和主機(jī)通過(guò)SPI通信了。所有的主機(jī)和從機(jī)其實(shí)都有片選信號(hào),只有片選了,才能工作。但是主機(jī)的片選是通過(guò)軟件配置完成的,讀完下面的幾段,希望能給您說(shuō)清楚。

STM32中,當(dāng)要配置為slave時(shí),只要將它的NSS引腳配置為低電平即可。那么如果要SPI配置為master時(shí),也要配置這個(gè)NSS,但此時(shí)配置為SPI_NSS_Soft。究竟什么是SPI_NSS_Soft和SPI_NSS_Hard呢?我們來(lái)看一下數(shù)據(jù)手冊(cè)的說(shuō)明吧:在stm32的spi.h文件里面是這么定義的

本文引用地址:http://butianyuan.cn/article/201611/317635.htm

#define SPI_NSS_Soft ((uint16_t)0x0200)
#define SPI_NSS_Hard ((uint16_t)0x0000)

它對(duì)應(yīng)的SPI的控制寄存器的第9bit(從第0bit開始數(shù))SSM(Software slave management),數(shù)據(jù)手冊(cè)上是這么說(shuō)的,當(dāng)SSM為1時(shí),NSS管腳的輸入被SSI(空寄存器1的第8bit)值取代;當(dāng)為0時(shí),對(duì)應(yīng)為外部NSS管腳的狀態(tài)。

再來(lái)看看配置master:

#define SPI_Mode_Master ((uint16_t)0x0104)
#define SPI_Mode_Slave ((uint16_t)0x0000)

從#define SPI_Mode_Master ((uint16_t)0x0104) 這句可以看出配置了第2bit為1,第8bit位為1.在SPI的控制寄存器中,第2bit位是MSTR,當(dāng)配置這個(gè)位為0時(shí),配置SPI為slave模式,如果該位是1,則為master模式。第8bit是SSI(內(nèi)部從機(jī)選擇位),數(shù)據(jù)手冊(cè)的說(shuō)明是:僅當(dāng)SSM位為1時(shí),SSI位的值被強(qiáng)制對(duì)應(yīng)到NSS引腳,而此時(shí)NSS引腳I/O寄存器的值被忽略。當(dāng)SSI為1時(shí),那么對(duì)應(yīng)的NSS引腳為1,在它內(nèi)部看來(lái),它被使能了,被配置成了master。

可能有點(diǎn)迷糊,什么是NSS引腳,什么是NSS引腳I/O?。课业睦斫馐?,NSS引腳是SPI通信的信號(hào)線之一,它可以不必要地連接到真實(shí)的I/O口上,可以軟件置位和復(fù)位;而NSS引腳I/O是NSS這個(gè)信號(hào)線所連接的外部I/O口。例如上面第三段說(shuō)的,NSS管腳的輸入被SSI的值取代。



關(guān)鍵詞: STM32系列SPI_NS

評(píng)論


技術(shù)專區(qū)

關(guān)閉