最近项目有使用到max31865铂电阻测温芯片,通讯是SPI通讯,本人第一次使用。
主机采用的是STM32的单片机,库函数是HAL库历慎。前期读取寄销敬存器数据的方式调用了HAL库的函数:
HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size,uint32_t Timeout)
然后采用正点原子定义的一个函数:
u8 SPI2_ReadWriteByte(u8 TxData)
{
u8 Rxdata
HAL_SPI_TransmitReceive(&SPI2_Handler,&TxData,&Rxdata,1,1000)
return Rxdata //返回收到的数据
}
在测试过程中发现单片机SPI能自发自收,而且单片机的SPI配置和代码感觉都是按着从机的数据手册要求来编写,但从机max31865就是不响应,不返回任何数据。SDO全程处于高阻态。
直到采用逻辑分析仪查看,如下图:
和数据手册亏烂慎的波形图对比之后,发现果然是自己代码的问题,数据手册要求如下图所示:
从机发数据也是需要主机提供时钟信号的
简单修改之后,果然收到了从机的数据,如下图:
这不培启逗是你的完整程序吧,配卖不完整哦,还有很多地方没有写好!#include
<stdio.h>
void
main()
{
int
x,y,c
int
max(int
x,int
y)
scanf("%d%d",&x,&y)
c=max(x,y)
printf("%d",c)
}
int
max(int
x,int
y)
{
int
z
if(x>旁知y)
z=x
else
z=y
return(z)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)