MLX90333 郁闷了好几天,数据就是读错(变化太大,无规律),哪位高手用过,给个驱动代码借鉴一下,这是我用stm32f103vet6 的代码:
spi 配置:
void SPI_Configuration(void)
{
SPI_InitTypeDef SPI_InitStructure; //结构体
GPIO_InitTypeDef GPIO_InitStructure; // 管教初始化
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*片选引脚定义*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; //双向双线全双工
SPI_InitStructure.SPI_Mode=SPI_Mode_Master; // CPU为主模式
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; //发送8位的
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low; //时钟
SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge; //捕获第二个时钟沿
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft; // 内部管理
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8; // 波特率预分频值为8
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; //数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial = 7; //crc校验
SPI_Init(SPI1,&SPI_InitStructure); //初始化
SPI_Cmd(SPI1,ENABLE); //使能SPI
}
void SPI_SendByte(u8 byte) //写字节函数
{
u8 i,temp;
SPI_MLX90333_L;
delay_us(10);
for(i=0; i<8; i++)
{
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);//判断一下发送缓冲区忙不忙
SPI_I2S_SendData(SPI1,byte); //发送数据
//delay_us(45);
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);//接收缓冲区非空标志数
temp = SPI_I2S_ReceiveData(SPI1);
Alpha_Beta_Error = temp;
}
delay_us(10);
SPI_MLX90333_H;
delay_us(1500);
}
这是读数据的程序。。
每次读出来的都极不稳定。。。。。。
哪位大师会的教教我,万分感谢,纠结了好多天。 邮箱972123558@qq.com
|