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的從機不能主動傳送資料,只能應答資料。本例子的資料互動過程 主機使用查詢方式傳送資料給從機。從機使用中斷接收方式接收資...