求 ADS1292R 寄存器 配置 问题
我正使用msp430f5438驱动ADS1292R测量心电和呼吸,已能正常读写1292寄存器,配置寄存器时,遇到了困难,怎么配置 都不对,想请各位老师 给推荐一下参考寄存器。。PS:模拟器用的是福禄克mps450,电路图用的是官方评估板上的图,要求一通道测呼吸,二通道测一导联心电。。谢谢各位老师。。
Hi puling,
感谢你对论坛的支持,我们会和AE确认是否有相关的资料可以帮助到你。
请问你们有没有ADS1292R的参考程序
有 留个联系方式 发给你
谢谢,1138579250@qq.com
求参考程序。。fuwen0202@163.com
我的寄存器读写一直不正常,难道不是发送 (0x20 | reg)和(0x00 | length)这两个数据包,然后读取2个8bit数据么,我读取到的一直是0,,
单片机的SPI的设置为1MHz,高位在前,上升沿采样,下降沿置位,SCK闲置时为0,对么,和ads1293一样设置的
这是一个完整的工程吧,谢谢,您有没有“ADS1298ECGFE-PDK 1.0.0 版本安装”,官网下不了
这个是1298 的配套评估软件吧,我有ads129xecg-fe-setup-1.1.1.exe这个版本的 好久不用了,不知道是不是你需要的
有没有1292R的配套评估软件
发给你你自己看看吧 时间长我也忘了 链接:http://pan.baidu.com/s/1o6FRKMm 密码:9kv1
有的,我手上买了ads1298r和1293的开发板,
1298r的板子只能配套ADS129xECG-FE使用,
而ADS1298R-EVM不知怎么,那个软件一直找不到板子。。。
你好,你以前提供我的ADS1292R程序,我参考了一下,但是运行在我的板子上,读出来的初试结果是错误的下面是我的程序
#include <msp430x14x.h>
char MST_Data = 0xAA,SLV_Data = 0xff;
unsigned char a[12];
unsigned char b[12];
#define SPI_ENABLE P2OUT &=~0x08;
#define SPI_DISABLE P2OUT |=0x08;
unsigned char regdata[11]={0x02,0xeb,0x18,0x00,0x00,0x30,0x0f,0x40,0x02,0x01,0x03};//二通道心电测试信号,无呼吸
void Stop_Read_Data_Continuous (void)
{
unsigned int i=0;
SPI_ENABLE; // /CS enable
//for(i=0;i<10;i++);
//while (!(IFG1&URXIFG0)); // Clear flag
TXBUF1 =0x11; // Send SDATAC
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
// UCA0IFG &= ~(UCRXIFG+UCTXIFG); // Clear flag 可能自动复位(zhao)
SPI_DISABLE; // /CS disable
for(i=0;i<10;i++);
}
void Start_Read_Data_Continuous (void)
{
unsigned int i=0;
SPI_ENABLE;
// while (!(IFG1&URXIFG0)); // Clear flag
TXBUF1 =0x10; // Send RDATAC
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
// UCA0IFG &= ~(UCRXIFG+UCTXIFG); // Clear flag
// UCA0IFG &= ~UCRXIFG; // Clear flag
SPI_DISABLE;
for(i=0;i<10;i++);
}
void SPI_RegRead(unsigned char addr, unsigned char *buffer, unsigned char count)
{
unsigned int i=0,j=0;
//P1OUT |=BIT1;
//退出连续读数模式
Stop_Read_Data_Continuous (); //When in RDATAC mode, the RREG command is ignored.Send SDATAC MUST BE SENT
//for(i=0;i<50;i++);
SPI_ENABLE; // /CS enable
TXBUF1 =addr+0x20; // Send address
while ((IFG2 & UTXIFG1) == 0); // USART0 TX buffer ready?
// UCA0IFG &= ~(IFG+UCTXIFG); // Clear flag
TXBUF1 = count-1; // regedit count ge shu
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
// UCA0IFG &= ~(UCRXIFG+UCTXIFG); // Clear flag
for (i = 0; i<count;i++)
{
TXBUF1 = 0x55; //Initiate next data RX, meanwhile..
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
buffer[i] = RXBUF1; // Store data from last data RX
TXBUF0=RXBUF1;
while (!(IFG2&URXIFG1)); // Wait for TXBUF ready
for(j=0;j<10;j++);
P2OUT =~0X04;
}
SPI_DISABLE; // /CS disable
//P1OUT = 0x00;
for(i=0;i<10;i++);
//回到连续模式方便读数
Start_Read_Data_Continuous ();
for(i=0;i<10;i++);
}
void SPI_Regwrite(unsigned char addr,unsigned char *data,unsigned char count)
{
unsigned int i=0,j=0;
//P1OUT |=BIT1;
//退出连续读数模式
Stop_Read_Data_Continuous ();
SPI_ENABLE; // /CS enable
//UCA0IFG &= ~(UCRXIFG+UCTXIFG); // Clear flag
TXBUF1 =addr+0x40; //发送地址信息; 首地址是0x01;(zhao)
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
// UCA0IFG &= ~(UCRXIFG+UCTXIFG); // Clear flag
TXBUF1 =count-1; //发送header; //发送的寄存器数量为10个(zhao)
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
for (i = 0; i<count;i++)
{
//UCA0IFG &= ~(UCRXIFG+UCTXIFG); // Clear flag
TXBUF1 =data[i];
while (!(IFG2&UTXIFG1)); // Wait for TXBUF ready
for(j=0;j<30;j++);
}
SPI_DISABLE; // /CS disable
//回到连续模式方便读数
Start_Read_Data_Continuous ();
}
void intSPI1()
{
P5SEL |= 0x0E; // P5.1,2,3 SPI option select
P5OUT &= ~0x01;
P5DIR |= 0x01;
U1CTL = CHAR + SYNC + MM + SWRST; // 8-bit, SPI, Master
U1TCTL = CKPL + SSEL1 + STC; // Polarity, SMCLK, 3-wire
U1BR0 = 0x02; // SPICLK = SMCLK/2
U1BR1 = 0x02;
U1MCTL = 0x00;
ME2 |= USPIE1; // Module enable
U1CTL &= ~SWRST; // SPI enable
IE2 |= URXIE1 + UTXIE1; // RX and TX interrupt enable
}
void intUART0()
{
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x03; // 32k/9600 - 3.41
UBR10 = 0x00; //
UMCTL0 = 0x4A; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt
}
void main( void )
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P1OUT = 0x000;
P1DIR |= 0x001; //设置P1.0为输出
P1SEL = 0x010;
P2DIR |= 0x00f; //0,1,2,3输出
P2OUT |=0x03; //START,RST高电平
P5SEL = 0x020; //设置P3端口为SPI模式
intUART0();
intSPI1();
_EINT();
SPI_RegRead(0x00,a,12); //读取初始寄存器,检验电路连接是否正确
SPI_Regwrite(0x01,regdata,11); //写入配置寄存器,
i=50000;
do(i--);
while(i != 0);
//SPI_RegRead(0x00,b,12); // 再次读出寄存器 检验是否写入正确
// TXBUF0 = MST_Data; //传输第一个字符
for (;;)
{
//_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt
;
}
//LPM0; //关CPU,进入低功耗模式
}
#pragma vector=USART1RX_VECTOR
__interrupt void SPI1_rx (void)
{
P1OUT = RXBUF1; // RXBUF1 to TXBUF1
}
#pragma vector=USART1TX_VECTOR
__interrupt void SPI1_tx (void)
{
unsigned int i;
i = P1IN;
i = i >> 4;
TXBUF1 = 0xaa; // Transmit character
}
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
// RXBUF0 to TXBUF0
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}
你好,你当时给我了一个ADS1292R的驱动程序,现在的问题是寄存器可以读写,但是测试信号是错的,看时序发现读数据时不是连续读模式
我现在的问题是每三个SCLK就出现一个DRDY中断,而不是九个,因此数据发不完,九个数据只能发三个,这是怎么回事,求指导!
你好,我也需要一份ADS1292R的参考代码?能发我一份吗?
您好,后来能测出心电数据和呼吸波数据了吗?我现在寄存器无法读写,读出来的数据和我写进去的不同,能给我参考一下程序吗?万分感谢
您好,请问问题解决了吗?我也遇到同样的问题了