完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
这是我SPI读写ADS1293的程序,可以写入,示波器也能看见CS、CLK、MOSI都有方波波形,但是总是不能返回数据,我用中断模式去读取数据,DRDYB也不会被拉低,就是说没有返回数据,请高手看下,哪里有错误,或者可能是哪里的错误?
void ADS_Write(unsigned char ADS_COM,unsigned char ADS_DAT) { ADS_CS = 0; // SSN LOW U0DBUF = ADS_COM; while (!(U0CSR&0x02)); U0CSR &= 0xFD; U0DBUF = ADS_DAT; while (!(U0CSR&0x02)); U0CSR &= 0xFD; unsigned char temp = U0DBUF; ADS_CS = 1; // SSN high } /******************************** 从SPI器件读出一个字节数据 ********************************/ unsigned char ADS_read(unsigned char ADS_addr) { unsigned char ADS_DAT; ADS_CS = 0; // SSN LOW U0DBUF = 0x80+ADS_addr; while (!(U0CSR&0x02)); U0CSR &= 0xFD; U0DBUF =0x00; while (!(U0CSR&0x02)); U0CSR &= 0xFD; ADS_DAT = U0DBUF; ADS_CS=1; return ADS_DAT; } //初始化 ADS_Write(0x01,0x11); //IN1连CH1- ,IN2连CH1+ Delay(1000); ADS_Write(0x02,0x19); //IN1连CH2- ,IN3连CH2+ Delay(1000); ADS_Write(0x03,0x2E); Delay(1000); ADS_Write(0x0A,0x07); // 共模检测IN1,IN2,IN3. Delay(1000); ADS_Write(0x0C,0x04); //通道IN4 为右腿驱动 Delay(1000); ADS_Write(0x0D,0x01); //威尔逊参考输入IN1 Delay(1000); ADS_Write(0x0E,0x02); //威尔逊参考输入IN2 Delay(1000); ADS_Write(0x0F,0x03); //威尔逊参考输入IN3 Delay(1000); ADS_Write(0x10,0x01); //威尔逊选择 Delay(1000); ADS_Write(0x12,0x04); //使能时钟 注意:设置此位高后,才振荡器起振后或振荡器已关闭和外部时钟已经开始了。 Delay(1000); ADS_Write(0x21,0x02); //抽取率????? Delay(1000); ADS_Write(0x22,0x02); Delay(1000); ADS_Write(0x23,0x02); Delay(1000); ADS_Write(0x24,0x02); Delay(1000); ADS_Write(0x27,0x08); //Data Ready Pin Source Driven by channel 1 ECG Delay(1000); ADS_Write(0x2F,0x70); // 配置通道的环回读模式 Delay(1000); ADS_Write(0x01,0x01); void main(void) { uchar count = 0; uchar LDate,MDate,HDate; uint ALLDate; Init_T4_AND_LED(); INT_ADS1293(); //Set_Spi(); while(1) { LDate=ADS_read(ti_ADS1293_DATA_CH1_ECG_L_REG); MDate=ADS_read(TI_ADS1293_DATA_CH1_ECG_M_REG); HDate=ADS_read(TI_ADS1293_DATA_CH1_ECG_H_REG); ALLDate=LDate+MDate*255+HDate*255*255; }; |
|
相关推荐
2个回答
|
|
|
能否提供以下你的SPI时序波形,这样更容易找到问题。
|
|
|
|
|
|
根据您的描述,您的SPI读写ADS1293程序可以写入数据,但是无法读取数据。以下是一些可能的原因和解决方案:
1. 检查ADS1293的配置寄存器是否正确设置: 确保您已经正确配置了ADS1293的寄存器,特别是控制寄存器(R0)和数据格式寄存器(R1)。这些寄存器决定了数据的格式和采样率。如果配置不正确,可能会导致无法读取数据。 2. 检查SPI时钟频率: 确保您的SPI时钟频率与ADS1293兼容。ADS1293的最大SPI时钟频率为1MHz。如果您的SPI时钟频率过高,可能会导致通信问题。 3. 检查SPI模式: ADS1293支持SPI模式0(CPOL=0,CPHA=0)和SPI模式3(CPOL=1,CPHA=1)。确保您的SPI模式与ADS1293兼容。 4. 检查中断模式配置: 您提到使用了中断模式读取数据,但是DRDYB没有被拉低。请检查您的中断配置是否正确。确保您的中断服务例程(ISR)能够正确处理DRDYB信号。 5. 检查硬件连接: 检查您的硬件连接是否正确。确保CS、CLK、MOSI和MISO引脚连接正确,并且没有短路或断路。 6. 检查ADS1293的电源和地: 确保ADS1293的电源和地连接正确。如果电源或地连接不良,可能会导致通信问题。 7. 使用示波器检查SPI通信: 使用示波器检查SPI通信,确保数据正确发送和接收。检查MOSI和MISO引脚的波形,确保数据传输正常。 8. 检查代码逻辑: 仔细检查您的代码逻辑,确保没有遗漏或错误。特别是检查读取数据的部分,确保正确处理DRDYB信号和读取数据。 综上所述,您需要检查ADS1293的配置寄存器、SPI时钟频率、SPI模式、中断配置、硬件连接、电源和地连接以及代码逻辑。通过逐步排查,您应该能够找到问题所在并解决。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1756浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:47 , Processed in 0.893479 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6506