久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于STM32中NSS位的用法

 艾俊軼 2020-03-09
                                             我們都知道STM32中的SPI一共有四根線,分別是MISO,MOSI,NSS,SCK
MISO跟MOSI是雙向數(shù)據(jù)線,,SCK是時(shí)鐘線,。
我們下面來介紹一下關(guān)于NSS是什么作用。
在標(biāo)準(zhǔn)的SPI通信協(xié)議中除了上面的三根線,,還有一根是CS線即片選線,,所以在這里,NSS也是片選,,只不過此片選線相對(duì)復(fù)雜了點(diǎn),。
對(duì)于STM32來說,NSS線既可以作輸入,,又可以作輸出,。所謂輸入就是外部NSS輸入給自己。輸出就是將NSS的信號(hào)送出去,。輸入與輸出的配置,,可以通過SPI_CR2寄存器的SSOE位,當(dāng)此位為1時(shí),,且SPI為主機(jī)時(shí),,NSS就輸出低電平,也就是拉低,,因此當(dāng)其他SPI設(shè)備的NSS引腳與它相連,,必然接收到低電平,則片選成功,,都成為從設(shè)備了,。
NSS輸入時(shí),分為兩種情況,,一種是軟件模式,,一種是硬件模式。
軟件模式
  1 對(duì)于SPI主機(jī)來說
需要設(shè)置SPI_CR1寄存器的SSM為1和SSI位為1,,SSM為1是為了使能軟件管理,。NSS有內(nèi)部和外部引腳。這時(shí)候,,外部引腳留作他用(可以用來作為GPIO驅(qū)動(dòng)從設(shè)備的片選信號(hào)),。內(nèi)部NSS引腳電平則通過SPI_CRL寄存器的SSI位來驅(qū)動(dòng)。SSI位為1是為了使NSS內(nèi)電平為高電平,。
STM32手冊(cè)上說,,要保持MSTR和SPE位為1,也就是說要保持主機(jī)模式,只有NSS接到高電平信號(hào)時(shí),這兩位才能保持置1.也就是說對(duì)于STM32的SPI,,要保持為主機(jī)狀態(tài),,內(nèi)部輸入的NSS電平必須為高。當(dāng)然這里在硬件模式下也是如此,。
2 對(duì)于SPI 從機(jī)來說
    主機(jī)自己的內(nèi)部NSS高電平解決了,,那么SPI從機(jī)的NSS片選低電平也得解決啊。
如果從機(jī)選擇STM32的一個(gè)SPI,,譬如主機(jī)選為SPI1,,從機(jī)選為SPI2,則要按照以下操作手冊(cè)說,,NSS引腳在完成字節(jié)傳輸之前必須連接到一個(gè)低電平信號(hào),。在軟件模式下,則需要設(shè)置SPI_CR1寄存器的SSM為1(軟件管理使能)和SSI位為0.果然如此,。SSI必須要為0,,也就是SPI2的片選為低,則片選成功,。

對(duì)于主機(jī),,我們的NSS可以直接接到高電平,對(duì)于從機(jī),,NSS接低就可以,。
當(dāng)然我們上面提過當(dāng)一個(gè)主機(jī)的SSOE為1時(shí),主機(jī)工作在輸出模式,,而且NSS拉低了,,我們要讓從機(jī)片選,只要將CS接到主機(jī)的NSS上,,CS自動(dòng)拉低,。


  SPI_InitStructure.SPI_Direction =SPI_Direction_2Lines_FullDuplex;

  SPI_InitStructure.SPI_Mode =SPI_Mode_Master;     //這里設(shè)置SPI1為主模式,設(shè)置SSI為1

  SPI_InitStructure.SPI_DataSize =SPI_DataSize_8b;

  SPI_InitStructure.SPI_CPOL =SPI_CPOL_Low;

  SPI_InitStructure.SPI_CPHA =SPI_CPHA_2Edge;

  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;        //這里設(shè)置SSM為1,,軟件管理
  SPI_InitStructure.SPI_BaudRatePrescaler =SPI_BaudRatePrescaler_4;

  SPI_InitStructure.SPI_FirstBit =SPI_FirstBit_LSB;

  SPI_InitStructure.SPI_CRCPolynomial =7;

  SPI_Init(SPI1,&SPI_InitStructure);






  SPI_InitStructure.SPI_Mode =SPI_Mode_Slave;//這里設(shè)置SPI2為從模式SSI為0

 //因?yàn)镾PI2和SPI1用的是同一個(gè)SPI_InitStructure,,所以SSM位已經(jīng)為1

  SPI_Init(SPI2,&SPI_InitStructure);

對(duì)于SPI2的配置,和SPI1用的是同一個(gè)結(jié)構(gòu)體,,只需要把模式和SSI一改就行,,其他的譬如軟件使能,還有時(shí)序什么的都不用改,。這樣SPI1和SPI2就配置好了,。以后就可以傳輸數(shù)據(jù)了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多