请讲讲怎么使用HAL_SPI_Transmit();HAL_SPI_Receive();HAL_SPI_TransmitReceive();发送和接收一个Byte吗? 用的CUBEMX生成的SPI3的配置 void MX_SPI3_Init(void) { hspi3.Instance = SPI3; hspi3.Init.Mode = SPI_MODE_MASTER; hspi3.Init.Direction = SPI_DIRECTION_2LINES; hspi3.Init.DataSize = SPI_DATASIZE_8BIT; hspi3.Init.CLKPolarity = SPI_POLARITY_LOW; hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; hspi3.Init.NSS = SPI_NSS_SOFT; hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi3.Init.TIMode = SPI_TIMODE_DISABLE; hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi3.Init.CRCPolynomial = 7; hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; hspi3.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; if (HAL_SPI_Init(&hspi3) != HAL_OK) { Error_Handler(); } } 我下面这样写对吗? void SPI_WriteByte(uint8_t TxData) { HAL_SPI_Transmit(&hspi3,&TxData,1,0xffff); } uint8_t SPI_ReadByte(uint8_t RxData) { HAL_SPI_Receive(&hspi3,RxData, 1, 0xffff); } |
可以讲讲 怎么 使用吗 谢谢
如下代码是我读取ID,先发送后读取:
谢谢 你的 解答HAL_SPI_Transmit(&hspi1,cmd,1,1000) == HAL_OK 这句什么意思啊
//SPI 读写一个字节
//TxData:要写入的字节
//返回值:读取到的字节
uint8_t Flash_ReadWriteByte(uint8_t TxData)
{
uint8_t Rxdata;
HAL_SPI_TransmitReceive(&hSPI1,&TxData,&Rxdata,1, 1000);
return Rxdata; //返回收到的数据
}
其它函数再把这个函数封装一下就可以了,比如连续读或者写就是一个对这个函数调用及循环
//TxData:要写入的字节
//返回值:读取到的字节
uint8_t Flash_ReadWriteByte(uint8_t TxData)
{
uint8_t Rxdata;
HAL_SPI_TransmitReceive(&hspi1,&TxData,&Rxdata,1, 1000);
return Rxdata; //返回收到的数据
}
封装一下就可以了
明白了 谢谢