| 
 
| 1.首先用IO 口来模拟SPI 通信,正常一点问题也没有。这就排除了硬件的问题。 2. 用STM32CubeMX 直接生成 SPI 代码。配置如下:
 hspi1.Instance = SPI1;
 hspi1.Init.Mode = SPI_MODE_MASTER;
 hspi1.Init.Direction = SPI_DIRECTION_2LINES;
 hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
 hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
 hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
 hspi1.Init.NSS = SPI_NSS_SOFT;
 hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
 hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
 hspi1.Init.TIMode = SPI_TIMODE_DISABLED;
 hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
 hspi1.Init.CRCPolynomial = 7;
 hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
 hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLED;
 HAL_SPI_Init(&hspi1);
 
 3. 程序第一次读取正常。再发送后读取就始终读回的都是00. 用示波器看波形数据都正常。就是读的时候波形是正确的。但就是
 set_cs_low;
 HAL_SPI_Transmit(&hspi1, &tx_cmd, 1,100);
 HAL_SPI_Receive(&hspi1,buffer,1,100);
 set_cs_high
 
 buffer 始终为0。感觉读不进数据一样。
 
 有人有遇到这个问题吗?这个不是新库HAL的一个BUG吧。调适了一周多。N种办法都想过(中断,配置,延时,字长。etc。。)。都没有用
 | 
 |