主题中讨论的其他器件: MSP430FG4619
工具与软件:
我们使用大量的 TI 产品、尤其是毫米波和 ADS112U04IPW。 我们将 ADS131M06与 MSP430FG4619配合使用。 我们在尝试从 ADS131m06中简单地读取6个模拟端口。
void ADS131_read (){ //将全部6个通道读取到阵列中。 假设默认启动增益=1、24位数据和其他默认条件、因此它会自动转换。
unsigned int byteHigh、byteMid、byteLow; unsigned long 结果;
io_low (P9、BIT7); //片选 ADS13
io_low (p9、BIT4);delay1ms ();io_high (p9、BIT4); //重置以同步数据 ????? 是否可以使用默认重置线而不是同步?
I=0;while ((P9IN 和 BIT5)&& I++<1000);if (I>950) user_debug_msg ("Data AD Ready not ready");//等待数据就绪变为低电平
SPI_TRANSFER (0x00); /?????? 发送空命令和读取响应以启动传输。
for (jjj=0;jjj<6;jjj++){ //读取6个通道
byteHigh = SPI_TRANSFER (0x00); //虚拟写入以读取高字节
byteMid = SPI_TRANSFER (0x00); //虚拟写入以读取中间字节
byteLow = SPI_TRANSFER (0x00); //虚拟写入以读取低字节
Result =((long) byteHigh << 16)|((long) byteMid << 8)| byteLow; //将三个字节组合成一个24位结果
if (result & 0x800000){result |= 0xFF000000; }//如果 ADC 使用二进制补码格式、则执行符号扩展
a_d[jj]=结果; //将结果放入数组中
} //读取6个通道
io_high (P9、BIT7); //取消选择 ADS131
}
//------------------
// SPI_TRANSFTER 通过 SPI 传输一个字节并返回接收到的字节。
unsigned int SPI_transfer (unsigned int 数据){
while (!(IFG2 & UCB0TXIFG));//等待 TX 缓冲区就绪
UCB0TXBUF = data; //发送数据
while (!(IFG2和 UCB0RXIFG));//等待接收完成
Return UCB0RXBUF; //返回接收到的数据
}