新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32系列之SPI_NSS的理解

        STM32系列之SPI_NSS的理解

        作者: 時間:2016-11-09 來源:網絡 收藏
        之前也是對SPI的NSS一頭霧水,看其他手冊上說的NSS就是片選信號。大多數的SPI從機的片選有效為低電平,當某一從機的NSS引腳為低電平時,該機被選中,就可以和主機通過SPI通信了。所有的主機和從機其實都有片選信號,只有片選了,才能工作。但是主機的片選是通過軟件配置完成的,讀完下面的幾段,希望能給您說清楚。

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

        本文引用地址:http://www.104case.com/article/201611/317635.htm

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

        它對應的SPI的控制寄存器的第9bit(從第0bit開始數)SSM(Software slave management),數據手冊上是這么說的,當SSM為1時,NSS管腳的輸入被SSI(空寄存器1的第8bit)值取代;當為0時,對應為外部NSS管腳的狀態。

        再來看看配置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,當配置這個位為0時,配置SPI為slave模式,如果該位是1,則為master模式。第8bit是SSI(內部從機選擇位),數據手冊的說明是:僅當SSM位為1時,SSI位的值被強制對應到NSS引腳,而此時NSS引腳I/O寄存器的值被忽略。當SSI為1時,那么對應的NSS引腳為1,在它內部看來,它被使能了,被配置成了master。

        可能有點迷糊,什么是NSS引腳,什么是NSS引腳I/O啊?我的理解是,NSS引腳是SPI通信的信號線之一,它可以不必要地連接到真實的I/O口上,可以軟件置位和復位;而NSS引腳I/O是NSS這個信號線所連接的外部I/O口。例如上面第三段說的,NSS管腳的輸入被SSI的值取代。



        關鍵詞: STM32系列SPI_NS

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 富源县| 山丹县| 潞城市| 罗江县| 塘沽区| 嘉兴市| 香港| 泸州市| 彰武县| 大方县| 宁晋县| 嘉兴市| 三亚市| 灵川县| 石渠县| 城市| 道真| 尉犁县| 那坡县| 茂名市| 济宁市| 始兴县| 甘南县| 河北区| 象州县| 柳河县| 长武县| 凯里市| 平湖市| 英山县| 宜兰市| 辰溪县| 车险| 高邮市| 甘洛县| 太保市| 河北区| 德化县| 大理市| 丰台区| 科技|