This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/ADS1293:MSP430和 ADS1293 SPI 读取问题

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP430G2553, ADS1293

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/870277/ccs-ads1293-msp430-and-ads1293-spi-reading-problem

器件型号: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Luis、

    原因可能是软件或硬件。

    您能否使用示波器来捕获 SPI 线路上的波形?

    很容易确定问题所在的位置。

    伊斯天

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,伊斯天。

    是的、这两者都有一点不同。 我检查了代码和硬件、两者都有问题。

    感谢你的答复。

    此致。

    Luis