请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:ADS1293 主题中讨论的其他器件:MSP430G2553、
工具/软件:Code Composer Studio
大家好。
我使用 MSP430G2553通过 SPI 通信连接 ADS1293。 MSP430以16MHz 运行。
我将 USCI_B0用作主器 件(P1.5 = CLK、P1.6 = SOMI 且 P1.7 = SIMO)、P2.2用作 CS 的输出。 基于 MSP430/ADS1293接口代码库 v1.0、我为创建了代码
写入和读取寄存器。
void ADS1293_SPI_WriteRegister (uint8_t 地址、uint8_t 值) { uint8_t inst; P2OUT &=~CS; // CS 启用 Inst = ADS1293_WRITE_BIT 和地址;//寄存器写入地址 while (!(IFG2 & UCB0TXIFG)); //等待 TXBUF UCB0TXBUF =安装; //发送地址 while (!(IFG2 & UCB0TXIFG)); //等待 TXBUF UCB0TXBUF =值; //发送数据 while (UCB0STAT 和 UCBUSY); //等待 TX 完成 P2OUT |= CS; // CS 禁用 } uint8_t ADS1293_SPI_ReadRegister (uint8_t 地址) { uint8_t x、inst; P2OUT &=~CS; // CS 启用 INST = ADS1293_READ_BIT |地址;//寄存器读取地址 while (!(IFG2 & UCB0TXIFG)); //等待 TXBUF UCB0TXBUF =安装; //发送地址 while (!(IFG2 & UCB0TXIFG)); //等待 TXBUF UCB0TXBUF = 0; //发送虚拟数据 while (UCB0STAT 和 UCBUSY); //等待 TX 完成 X = UCB0RXBUF; //读取数据 P2OUT |= CS; // CS 禁用 返回 x; //返回字节 }
这是也基于 MSP430/ADS1293接口代码库 v1.0配置 SPI 的代码
void SPIInit()
{
UCB0CTL1 |= UCSWRST; //复位 UCB0外设
UCB0CTL0 = UCCKPH + UCMSB + UCMST + UCSYNC;
/*
* UCCKPH=1、UCCKPL=0;
* MSB 优先
* 8位数据
*主模式
* 3引脚 SPI
*同步模式
*
UCB0CTL1 |= UCSSEL_2; //选择 SMCLK
UCB0BR0 |= 0xA0;
UCB0BR1 = 0x00; // 16MHz/160
P1SEL |= CLK | SOMI | SIMO;
P1SEL2 |= CLK | SOMI | SIMO; //将 P1.5 P1.6 P1.7模式设置为 SPI
P1DIR |= CLK | SIMO; //将 CLK 和 SIMO 引脚设置为输出
P1DIR &=~SOMI; //将 SOMI 设置为输入
P2DIR |= CS; //配置 CS 引脚
P2OUT |= CS; //禁用 CS
UCB0CTL1 &=~UCSWRST; //初始化 USCI 状态机
}
设置 ADS1293后 、我读取一个寄存器以确保正确设置器件。 ´s、我读取寄存器0x02、它应该得到0x19、但即使 在其他寄存器中也总是得到0x00
我认为我对寄存器的写入是正确的、因为 DRDYB 引脚被置为有效(端口中断)。
可以帮助我解决这个问题吗? 或者我做了什么错?
谢谢你。
Luis