21ic问答首页 - N32G435单片机SPI无法读到从机数据
N32G435单片机SPI无法读到从机数据
SPI写数据进从机寄存器没有问题,波形正常,且从机驱动。但是写完数据后从从机读取寄存器数据,发现读取不到从机数据,测量波形发现,发送从机地址的波形正确,但是从机未回任何数据,时钟也只有8个周期(发送数据的),没有读数据的时钟。
如下是读取从机寄存器值的函数,
uint32_t TDC7200_ReadByte(uint8_t addr)
{
uint32_t Rd_Data;
SPI_CS_L_TDC7200();
SPI_WriteByte(addr);
Rd_Data = SPI_ReadByte();
SPI_CS_H_TDC7200();
return Rd_Data;
Delay(1);
}
SPI读数据,使用的是官方例程中的代码,只是在前面增加了一段等待接收完成。
uint8_t SPI_ReadByte(void)
{
while (SPI_I2S_GetStatus(SPI1, SPI_I2S_RNE_FLAG) == RESET)
;
/* Check the parameters */
assert_param(IS_SPI_PERIPH(SPI1));
/* Return the data in the DAT register */
return SPI1->DAT;
}
如下是读取从机寄存器值的函数,
uint32_t TDC7200_ReadByte(uint8_t addr)
{
uint32_t Rd_Data;
SPI_CS_L_TDC7200();
SPI_WriteByte(addr);
Rd_Data = SPI_ReadByte();
SPI_CS_H_TDC7200();
return Rd_Data;
Delay(1);
}
SPI读数据,使用的是官方例程中的代码,只是在前面增加了一段等待接收完成。
uint8_t SPI_ReadByte(void)
{
while (SPI_I2S_GetStatus(SPI1, SPI_I2S_RNE_FLAG) == RESET)
;
/* Check the parameters */
assert_param(IS_SPI_PERIPH(SPI1));
/* Return the data in the DAT register */
return SPI1->DAT;
}
赞0
708767ada40c8e490.png (158.57 KB )
下载附件
2025-2-13 15:49 上传
评论
2025-02-13
赞0
评论
2025-02-13
您需要登录后才可以回复 登录 | 注册