stm8s10X的SPI硬件通訊配置
前期:
1.打開外設(shè)時(shí)鐘前期(打開外設(shè)時(shí)鐘設(shè)時(shí)鐘均處于開的狀態(tài)。用戶可通過清除CLK_PCKENR1或CLK_PCKENR2中PCKEN位來關(guān)閉相應(yīng)的外設(shè)時(shí)鐘。但是在關(guān)閉外設(shè)的時(shí)鐘前,用戶必須設(shè)置相應(yīng)的位禁用該外設(shè)。為了使能一個(gè)外設(shè),用戶必須先設(shè)置寄存器CLK_PCKENR中對(duì)應(yīng)的PCKEN位,然后設(shè)置外設(shè)控制寄存器中的外設(shè)使能位。) SPI對(duì)應(yīng)的標(biāo)號(hào)時(shí)PCKEN11
2.Alternate function output:SPI outputs must be set-up as push-pull.
3.復(fù)用功能的輸出:復(fù)用輸出功能為外設(shè)輸出到外部或者I/O引腳提供一個(gè)方便的操作方法。當(dāng)復(fù)用功能使能時(shí),復(fù)用功能模塊接管了輸出鎖存寄存器(Px_ODR)并強(qiáng)制Px_ODR相應(yīng)的位為1。復(fù)用輸出功能可以是上拉或者開漏輸出,取決于外設(shè)本身和控制寄存器1(Px_CR1),輸出擺率取決于控制寄存器2 (Px_CR2)的值。
例如:
考慮到要達(dá)到最佳性能,SPI輸出引腳必須設(shè)置為上拉,快速擺率。
配置步驟
1. 通過SPI_CR1寄存器的BR[2:0]位定義串行時(shí)鐘波特率
2. 選擇CPOL和CPHA位,定義數(shù)據(jù)傳輸和串行時(shí)鐘間的相位關(guān)系(改變CPOL/CPHA位之前,必須清除SPE位將SPI禁止)
3. 配置SPI_CR1寄存器的LSBFIRST位定義幀格式。
4. 硬件模式下,應(yīng)把NSS腳連接到高電平;軟件模式下,SPI_CR2寄存器的SSM和SSI位為‘1’
5. 必須設(shè)置MSTR和SPE位
/********開時(shí)鐘************************************/
CLK->PCKENR1 = CLK->PCKENR1|0x10;
/********將所有與spi相關(guān)寄存器置0**************/
void SPI_DeInit(void)
{
SPI->CR1 = SPI_CR1_RESET_VALUE;
SPI->CR2 = SPI_CR2_RESET_VALUE;
SPI->ICR = SPI_ICR_RESET_VALUE;
SPI->SR = SPI_SR_RESET_VALUE;
SPI->CRCPR = SPI_CRCPR_RESET_VALUE;
}
/********spi配置函數(shù)***************************/
void SPI_Init(SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, SPI_Mode_TypeDef Mode, SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase, SPI_DataDirection_TypeDef Data_Direction, SPI_NSS_TypeDef Slave_Management, uint8_t CRCPolynomial)
/********使能spi*******************************/
void SPI_Cmd(FunctionalState NewState)
就此spi就配置好了