主题中讨论的其他器件:MSP430FR2433、
大家好、我将 ADS1231连接到 MSP430FR2433中的电路、该电路与参考设计类似甚至不相同。
实际上、我有一个连接到 ADS1231的加载单元、该加载单元馈送到 MSP430。 底部还有一些开关和 LED、您可以忽略它们。
如您所见、数据速率设置为较慢的10Hz 速率。 我正在使用内部时钟。
我有 SCLK 馈送至 MSP430并在 MSP430上输出、并将 DRDY/DOUT 馈送至输入。
这一切都在2层 PCB 上。 两个芯片的距离为10 mm。
通过 Launchpad @ 3.3V 的 USB 供电。
这是我的问题。
- 当 MCU 将 SCLK 设置为高电平或低电平时、我无法在示波器上看到任何内容。 我只能假设它是一个接收信号的低阻抗引脚。
- DRDY/DOUT 的输出很奇怪。 在某些情况下、这是正常的。 如果 SCLK 保持低电平、则 DRDY 处于高电平。
- 但是、如果我尝试读取数据、DOUT 会为我提供奇怪的输出。 查看此图:
在 MCU 中的程序中、我等待 DRDY 变为低电平。 当它执行此操作时、我将一个不相关的输出、这是您看到的蓝线。 请注意、该脉冲与1ms@3.3V 有关。
然后、我将 SCLK 设置为高电平、等待1ms、读取 DOUT、将 SCLK 设置为低电平等、并对接下来的23 (+1)位重复此操作。
但是、您在 DOUT 看到的黄色波形实际上只是反映 SCLK、但请注意、它仅为~1.4V。 这是无效的、因为数据表显示低电平应为最大值0.66V、而高电平应为最小值2.9V、在中给出了3.3V。
您还可以看到、我以某种错误的方式获得了一些3.3V 尖峰;这似乎与任何事情都无关。
该计划反映了我刚才描述的内容:
#include
#define DOUT P1_3
#define CLK P1_2
#define PULSE_width 1000
uint16_t IN[3];
void pause (void);
uint8_t SPI_transfer_BYTE (uint8_t);
void setup (){
Serial1.begin(9600);
pinMode (6、output);
pinMode (CLK、output);
引脚模式(DOUT、输入);
//使用脉冲复位 DOUT。
digitalWrite (CLK、HIGH);
paus();
digitalWrite (CLK、LOW);
pause();
}
void loop()
{
if (digitalRead (DOUT)== low)
{
//将输出拉至触发范围。
digitalWrite (6、高);
pause();
digitalWrite (6、low);
for (int i=0;i<3;i++)
IN[i]= SPI_TRANSFER_BYTE (0);
SERIAL1.PRINT (IN[0]、HEX);
SERIAL1.print (in[1]、十六进制);
SERIAL1.PRINT (IN[2]、HEX);
//用25个脉冲复位 DOUT。
pause();
digitalWrite (CLK、HIGH);
pause();
digitalWrite (CLK、low);
}
Serial1.write (".");
}
uint8_t SPI_transfer_BYTE (uint8_t byte_out)
{
uint8_t byte_in = 0;
uint8_t 位;
对于(位= 0x80;位;位>=1)
{
pause();
digitalWrite (CLK、HIGH);
if (digitalRead (DOUT)==高电平)
byte_in |=位;
pause();
digitalWrite (CLK、low);
}
返回 byte_in;
}
void paus()
{
delayMicroseconds (pulse_width);
}
我曾尝试过:
- 连接或不连接称重传感器。
- 更改脉冲宽度。 数据表显示、我应该在100ms 内读取24位。
- 在 PCB 损坏或出现故障时具有不同芯片的不同 PCB。
- 根据我的原理图和 PCB 布局仔细检查参考设计。
这是 PCB
提前感谢。



