STM32的SPI查詢方式傳輸測試

2021-08-26 22:09:18 字數 2070 閱讀 1560

stm32的spi查詢方式傳輸測試

環境:

主機:win7

開發環境:mdk4.23

mcu:stm32f103cbt6

說明:

軟體設定nss腳,利用查詢方式傳輸

源**:

初始化**:

//關閉spi

spi_cmd(spi1,disable);

//初始化spi介面的ssn腳以及ntrx的rst腳

ntrxctrlinit();

//初始化spi時鐘

rcc_apb2periphclockcmd(rcc_apb2periph_spi1 | rcc_apb2periph_gpioa,enable);

//配置spi1引腳:sck, miso and mosi

gpio_initstructure.gpio_pin = gpio_pin_5 | gpio_pin_6 | gpio_pin_7;

gpio_initstructure.gpio_mode = gpio_mode_af_pp ;

gpio_initstructure.gpio_speed = gpio_speed_50mhz ;

gpio_init( gpioa, &gpio_initstructure );

// spi1配置

spi_initstructure.spi_direction = spi_direction_2lines_fullduplex ;

spi_initstructure.spi_mode = spi_mode_master ;

spi_initstructure.spi_datasize = spi_datasize_8b ;

spi_initstructure.spi_cpol = spi_cpol_low ;

spi_initstructure.spi_cpha = spi_cpha_1edge ;

spi_initstructure.spi_nss = spi_nss_soft ;

//spi波特率分頻設定:4m

spi_initstructure.spi_baudrateprescaler = spi_baudrateprescaler_8 ;

//spi設定成lsb模式

spi_initstructure.spi_firstbit = spi_firstbit_lsb ;

spi_initstructure.spi_crcpolynomial = 7 ;

spi_init( spi1, &spi_initstructure ) ;

//啟動spi

spi_cmd(spi1,enable);

傳送**:

//spi傳送乙個位元組

static uint8 spi_sendbyte(uint8 data)

接收**:

//spi讀取乙個位元組

void spi_readbytes( uint8 addr, ntrxbufferptr buffer, uint8 len )

}

nss腳電平設定:

//ssn腳拉低,開始傳送資料

void ntrxssn_lo( void )

//ssn腳置高,結束傳送資料

void ntrxssn_hi( void )

示例**:

uint8 ntrxreadsinglespi( uint8 addr )

輸出:

黃線為nss腳電平,藍線為clk電平.

STM32之間SPI通訊

這幾天實驗室比較忙,所以部落格這邊停了一下,繼續吧。繼串列埠中斷後,大家可以嘗試微控制器間串列埠通訊,這裡就不再多贅述。串列埠完了之後,我接著學的就是spi通訊了,作為hello moto公司推出的這種4線全雙工通訊,很節約pcb布局空間,但缺點就是沒有指定的流控制,沒有應答機制來確定訊號收到與否,...

STM32 快速上手SPI

基本的部分前文 stm32 spi 已經介紹過了,這裡只記怎麼用。stm32f103zet6的三個spi的引腳分別為 spi1在apb1時鐘下,spi2和spi3在apb2時鐘下。void spi i2s deinit spi typedef spix void spi init spi typed...

STM32 硬體SPI主從通訊

本例子基於stm32f103zet6晶元,實現spi1與spi2的主從通訊。其中spi1配置為主機,spi2配置為從機,均配置為全雙工模式。硬體連線圖 其中,我們需要注意的是,spi的從機不能主動傳送資料,只能應答資料。本例子的資料互動過程 主機使用查詢方式傳送資料給從機。從機使用中斷接收方式接收資...