|
初学者 想用STM32F407读取RHD1232芯片采集的脑电信号,使用SPI功能,先试着读取R40-R44寄存器中的值,这五个寄存器官方给的数据手册说存储这INTAN这几个字符的ASCII码。
我仿照的SPI-FLASH程序,使用的也是SPI1,SPI初始化没改,加了RHD1232初始化(只设置了片选信号)
出现的问题有一下几个:
Q1:芯片数据手册中,给R1-R17寄存器进行配置的时候是一次写入8位数据的,但是Command部分,发送读写、校准等命令要求发送的数据格式是16位的。而STM32在SPI初始化的时候就要设置数据的传输位数是8位还是16位。我最开始配置的8位,发送命令时发送两次,但是收到的数据不对。
Q2:为什么串口收回的数据每次都在变化,是根本就没有返回数据吗?
Q3:我用STM32给的FLASH例程但不调试的时候发现,单步执行到 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); 语句时会卡在循环里,但是如果进入 u16 SPI1_ReadWriteByte(u16 TxData) 函数后,再直接执行跳出函数,是可以跳出来了, 这是为什么?
附上程序,总觉得我可能缺少什么,请大佬们指点。程序中可能有的又被我改了,但是问题基本就是描述的那样。求教各位了
|
|