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/MSP430G2755:SPI UCB0RXBUF 只接收0x00

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/587921/ccs-msp430g2755-spi-ucb0rxbuf-receive-only-0x00

器件型号:MSP430G2755

工具/软件:Code Composer Studio

您好!

我在 UCB0RXBUF 中只接收来自 AD7689 ADC 的0x00数据、我不知道为什么。 我想从压力传感器获取数据。

我的代码是:

#include
char spiReadByte (void);
/*
* main.c
*
int main (void){
int i;
//停止看门狗计时器以防止超时复位
WDTCTL = WDTPW + WDTHOLD;
P1DIR=BIT0;//使引脚0输出
P1OUT=BIT0;//将引脚0变为高电平
P2DIR=BIT0+BIT1;
P2OUT=0;

P3OUT = 0x40;//设置从器件复位
P3DIR |= 0x40;//
P3SEL |= 0x0E;// P3.0、1、2、3 USCI_B0选项选择
UCB0CTL0 |= UCCKPL | UCMSB | UCMST | UCSYNC;// 3引脚、8位 SPI 主器件
UCB0CTL1 |= UCSSEL_2;// SMCLK
UCB0BR0 |= 0x02;///2
UCB0BR1 = 0;//
UCA0MCTL = 0;//无调制
UCB0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
IE2 |= UCB0RXIE;//启用 USCI0 RX 中断

P3OUT &=~0x40;//现在 SPI 信号已初始化、
P3OUT |= 0x40;//复位从器件

对于(I = 50;I > 0;I-);//等待从器件初始化-

for (i=2;i>0;i--)//DIN-t 2 beszelgetesig high-BA
{spiReadByte();}

// while (!(IFG2 & UCB0TXIFG);
//UCB0TXBUF =/*config adc hexaba*/;//发送第一个字符

//printf ("%d\n"、spiReadByte ());
while (1)
{spiReadByte();}

char spiReadByte (空)

字符 adat;
//等待 TX
while (!(IFG2 & UCB0TXIFG));//这仅告知您 TX 缓冲区为空。

UCB0TXBUF = 0xAA;

while (!(IFG2 & UCB0RXIFG));

ADAT = UCB0RXBUF;

退货地址;

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

    您好、Gergely、

    当 CNV 为低电平时、AD7689处于有效状态、但您的代码当前使用 P3.6继续将其驱动为高电平。 您还必须遵循 AD7689数据表表表表5中的所有时序规格。 另请研究此数据表的数字接口部分、特别是时序图39。 时钟极性显示为低电平有效(UCCKPL 清零)、并且在第一个 UCLK 边沿上捕获数据(UCCKPH 置位)。  如果可能、请提供示波器或逻辑分析仪屏幕截图。

    此致、
    Ryan