EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ Y; f/ C. o: x4 J. d3 l
如上图,一个字节的数据没发完CS就拉高了。' G, [; u* u5 Q# D3 G+ n4 q, q
芯片是GD32F103CBT6,使用STM32标准库。 配置: void SPI2_Config(void)
1 E4 K* L/ I1 f4 j{9 c9 q5 p8 L0 Y/ x& i" j& }$ D* ?
SPI_InitTypeDef SPI_InitStructure;
* [5 B3 D! L1 a7 K RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
; i" j: y0 g ]! N1 ]* V' @ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//双线双向全双工) m" O5 ]. `* j4 \7 g( t/ }" p
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//设置为主SPI$ S3 f" ]% v4 a. p0 p
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8位帧结构5 [8 t. z& P" N6 g! T8 H) [0 S
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//时钟悬空高
/ s6 y& u+ {5 y' t SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//第二个时钟沿
: u$ ?) A w4 p6 t SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//内部NSS信号由SSI位控制: g) C: f: P) f4 x6 A" v
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//预分频值为2 SPI_BaudRatePrescaler_2
/ [, N; p' n( L% k# f8 W8 e' Q3 D SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//数据传输从MSB位开始
5 S. M* J7 S7 o% M1 T) {/ n SPI_InitStructure.SPI_CRCPolynomial = 7;//用于CRC值计算的多项式% `+ H9 t' m( H7 d/ b" J1 w$ j; W+ ~
SPI_Init(SPI2,&SPI_InitStructure);//初始化配置; P. y3 W+ h8 w2 ]4 R& K; V! M
SPI_Cmd(SPI2,ENABLE);//使能或者失能SPI外设
: f# T, x' l' |7 @3 O+ n8 a; t1 x} void OLED_Send_1_Byte(u8 Data)
3 V% j! X* u0 A# L' H{
3 R$ u% |5 h l( ~; o9 Q8 n2 e OLED_CS_Set_0; ; }* D9 t( M3 O0 p, `
SPI_I2S_SendData(SPI2,Data);$ n8 M" ]1 @6 Z5 G
while((SPI2->SR & SPI_SR_TXE)==0);
% I& O5 h4 C. U9 C. ^ OLED_CS_Set_1; 0 k4 E" x5 b) |# r- T
} 执行:OLED_Send_1_Byte(0x55);
, N! m# Y" ]+ F3 b' P9 s. ~ |