msp430f5529的spi发送接受问题

[复制链接]
2291|4
 楼主| jixueyuan163 发表于 2014-6-5 18:07 | 显示全部楼层 |阅读模式
大家好,我是一个430的初学者,我画的板子是用f5529控制前端的adas1000(ADI的心电采集模拟前端)
需要用spi通信写寄存器以及从spi读取心电数据
现在程序调试的很不顺利 已经折腾个把月了……
现在遇到的困难是

在发送的过程中,byte++就会进入reset vector

而且最无语的是 同样的代码 有时候调试就可以运行 有时候就出问题了……新手遇到这个根本就是抓瞎了= =+




这几个是我调试成功时候的发送波形 我看了一下 和我发的数据是一样的……结果过一会儿就不行了……


另外 求大神帮忙告知SPI接收的情况 比如寄存器的判断什么什么的
您帮我看看我这个代码可行不
  1. /***************************************************************************//**
  2. * [url=home.php?mod=space&uid=247401]@brief[/url] Reads data from SPI.
  3. *
  4. * @param data - Data represents the read buffer.
  5. * @param bytesNumber - Number of bytes to read.
  6. *
  7. * [url=home.php?mod=space&uid=266161]@return[/url] Number of read bytes.
  8. *******************************************************************************/
  9. void SPI_Read(unsigned char* data,
  10.                                            unsigned char bytesNumber)
  11. {
  12.     unsigned char byte = 0;

  13.     P4OUT &= ~BIT0;                               // 将CS置低开始传输
  14.    
  15.     for(byte = 0; byte < bytesNumber; byte++)
  16.       {
  17.         while (!(UCB1IFG&UCTXIFG));
  18.          UCB1TXBUF = 0x55;
  19.         while (!(UCB1IFG&UCTXIFG));
  20.          data[byte] = UCB1RXBUF;                     // Transmit first character           
  21.       }
  22.   
  23.     P4OUT |= BIT0;                               // 将CS置高完成传输
  24.   
  25.         //return bytesNumber;
  26. }
前端ADAS1000的寄存器都是32位的,这是官方给出的读寄存器代码
  1. /***************************************************************************//**
  2. * @brief Reads the value of the selected register
  3. *
  4. * @param regAddress - The address of the register to read.
  5. * @param regVal - Pointer to a variable where to store the read data.
  6. *
  7. * @return None.
  8. *******************************************************************************/
  9. void ADAS1000_GetRegisterValue(unsigned char regAddress,
  10.                                                            unsigned long* regVal)
  11. {
  12.         unsigned char readCmd[4]        = {0, 0, 0, 0};
  13.         unsigned char readData[4]        = {0, 0, 0, 0};

  14.         // Select the register (For register reads, data is shifted out
  15.         // during the next word).
  16.         readCmd[0] = regAddress;        // Register address.
  17.         SPI_Write(readCmd, 4);
  18.        
  19.         // Read the data from the device.
  20.         SPI_Read(readData, 4);
  21.         *regVal = ((unsigned long)readData[1] << 16) +
  22.                           ((unsigned long)readData[2] << 8) +
  23.                           ((unsigned long)readData[3] << 0);
  24. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| jixueyuan163 发表于 2014-6-5 18:08 | 显示全部楼层
恳请大神帮忙  快毕不了业了  导师天天骂= =+
如果有北京的大神能线下帮忙的  楼主请吃饭
dirtwillfly 发表于 2014-6-5 20:31 | 显示全部楼层
可能是调试时电路接触不好
 楼主| jixueyuan163 发表于 2014-6-12 10:41 | 显示全部楼层
又一个星期过去了  我的程序还那逼样……
尼玛不想念书了……
 楼主| jixueyuan163 发表于 2014-6-12 10:41 | 显示全部楼层
dirtwillfly 发表于 2014-6-5 20:31
可能是调试时电路接触不好

我上周末又新焊了一块板子……调试的时候还是一样……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部