初學者 想用STM32F407讀取RHD1232芯片采集的腦電信號,使用SPI功能,先試著讀取R40-R44寄存器中的值,這五個寄存器官方給的數(shù)據(jù)手冊說存儲這INTAN這幾個字符的ASCII碼。
我仿照的SPI-FLASH程序,使用的也是SPI1,SPI初始化沒改,加了RHD1232初始化(只設(shè)置了片選信號)
出現(xiàn)的問題有一下幾個:
Q1:芯片數(shù)據(jù)手冊中,給R1-R17寄存器進行配置的時候是一次寫入8位數(shù)據(jù)的,但是Command部分,發(fā)送讀寫、校準等命令要求發(fā)送的數(shù)據(jù)格式是16位的。而STM32在SPI初始化的時候就要設(shè)置數(shù)據(jù)的傳輸位數(shù)是8位還是16位。我最開始配置的8位,發(fā)送命令時發(fā)送兩次,但是收到的數(shù)據(jù)不對。
Q2:為什么串口收回的數(shù)據(jù)每次都在變化,是根本就沒有返回數(shù)據(jù)嗎?
Q3:我用STM32給的FLASH例程但不調(diào)試的時候發(fā)現(xiàn),單步執(zhí)行到 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); 語句時會卡在循環(huán)里,但是如果進入 u16 SPI1_ReadWriteByte(u16 TxData) 函數(shù)后,再直接執(zhí)行跳出函數(shù),是可以跳出來了, 這是為什么?
附上程序,總覺得我可能缺少什么,請大佬們指點。程序中可能有的又被我改了,但是問題基本就是描述的那樣。求教各位了
|