| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  , Y3 z- D  x5 f  y2 L如上图,一个字节的数据没发完CS就拉高了。! ]( l) L) U; N& X' r- v* `9 ^
 
 芯片是GD32F103CBT6,使用STM32标准库。 配置: void SPI2_Config(void)( V' N+ y1 ~* I$ ~$ B6 A  s{
 / @0 [2 h- ^9 ~$ x0 T7 F! g  SPI_InitTypeDef SPI_InitStructure;
 8 C( u  L* y# b9 g' W/ ^9 ~5 h) h: G  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
 * R5 K$ [' x$ k    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//双线双向全双工
 - P& v5 y; |0 S6 A0 {    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//设置为主SPI$ w8 y, n3 ?% D  F5 A; i! B6 i
 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8位帧结构, H: Q. R& U4 [" M$ D1 t0 }
 SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//时钟悬空高
 " a% }9 ^$ R4 z% O    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//第二个时钟沿
 ; |( v" j% d% o" H3 T7 f4 Y    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//内部NSS信号由SSI位控制
 + O: v" f: i4 J& z    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//预分频值为2 SPI_BaudRatePrescaler_2
 ' q: z0 I5 i$ V/ L    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//数据传输从MSB位开始
 1 L' s) v6 s3 f6 R    SPI_InitStructure.SPI_CRCPolynomial = 7;//用于CRC值计算的多项式
 0 a1 G8 ~2 u& K/ Q  v    SPI_Init(SPI2,&SPI_InitStructure);//初始化配置
 9 s& l9 ]+ v, M* n7 g  SPI_Cmd(SPI2,ENABLE);//使能或者失能SPI外设
 * g! D% J/ M/ y/ K}
 void OLED_Send_1_Byte(u8 Data)) d6 E8 t% A" O/ ^! m+ U{
 $ r! N- H, t+ T6 E* H) d* P, S+ e OLED_CS_Set_0;    / @: @- X5 s: E8 q3 E/ G9 Y4 R$ k
 SPI_I2S_SendData(SPI2,Data);' L8 |" f6 C! l8 Q1 X# c2 H! L
 while((SPI2->SR & SPI_SR_TXE)==0);
 ! p) K( `% J: R; `  W1 a5 L; c8 E4 O OLED_CS_Set_1;    5 U3 g. z! c) C$ |
 }
 执行:OLED_Send_1_Byte(0x55);- k# n7 \4 c/ F) m0 h" Y 
 |