欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: STM32的SPI介紹和配置 [打印本頁]

作者: 51黑黑黑    時間: 2016-2-12 21:10
標題: STM32的SPI介紹和配置
通常SPI通過4個引腳與外部器件相連:

● MISO:主設(shè)備輸入/從設(shè)備輸出引腳。該引腳在從模式下發(fā)送數(shù)據(jù),在主模式下接收數(shù)據(jù)。

● MOSI:主設(shè)備輸出/從設(shè)備輸入引腳。該引腳在主模式下發(fā)送數(shù)據(jù),在從模式下接收數(shù)據(jù)。

● SCK:串口時鐘,作為主設(shè)備的輸出,從設(shè)備的輸入

●NSS:從設(shè)備選擇。這是一個可選的引腳,用來選擇主/從設(shè)備。它的功能是用來作為“片選引腳”,讓主設(shè)備可以單獨地與特定從設(shè)備通訊,避免數(shù)據(jù)線上的沖突。從設(shè)備的NSS引腳可以由主設(shè)備的一個標準I/O引腳來驅(qū)動。一旦被使能(SSOE位),NSS引腳也可以作為輸出引腳,并在SPI處于主模式時拉低;此時,所有的SPI設(shè)備,如果它們的NSS引腳連接到主設(shè)備的NSS引腳,則會檢測到低電平,如果它們被設(shè)置為NSS硬件模式,就會自動進入從設(shè)備狀態(tài)。當配置為主設(shè)備、NSS配置為輸入引腳(MSTR=1,SSOE=0)時,如果NSS被拉低,則這個SPI設(shè)備進入主模式失敗狀態(tài):即MSTR位被自動清除,此設(shè)備進入從模式。

下圖最能說明SPI的工作原理,非常簡單:

下面是STM32的SPI1模塊的簡單配置
void SPI_configuration()
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1|GPIO_Pin_6|RCC_APB2Periph_GPIOA,ENABLE);//使能SP1I和GPIOA時鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_7;//MOSISCK復(fù)用
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//SPI_CS
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//設(shè)置SPI單向或者雙向的數(shù)據(jù)模式:SPI設(shè)置為雙線雙向全雙工
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//設(shè)置SPI工作模式:設(shè)置為主SPI
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;//設(shè)置SPI的數(shù)據(jù)大小:SPI發(fā)送接收8位幀結(jié)構(gòu)
SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;//選擇了串行時鐘的穩(wěn)態(tài):時鐘懸空高
SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;//數(shù)據(jù)捕獲于第二個時鐘沿
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;//SPI_NSS_Soft;//NSS信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內(nèi)部NSS信號有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_2; //定義波特率預(yù)分頻的值:波特率預(yù)分頻值為256
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;//指定數(shù)據(jù)傳輸從MSB位還是LSB位開始:數(shù)據(jù)傳輸從MSB位開始
//SPI_InitStructure.SPI_CRCPolynomial=7;//CRC值計算的多項式
SPI_Init(SPI1,&SPI_InitStructure);//根據(jù)SPI_InitStruct中指定的參數(shù)初始化外設(shè)SPIx寄存器
SPI_Cmd(SPI1,ENABLE);//使能SPI外設(shè)  
}







歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1