主题中讨论的其他器件: PCM1804
大家好、
我目前正在进行一个项目 、在该项目中、我需要使用4引脚 SPI 接口从 MSP430F5438A 的外部 ADC (PCM1804)采样数据。 硬件当前设置为使 ADC 成为 SPI 通信的主器件、MSP430作为从器件。 ADC 的电流采样率约为1kHz、与器件的能力相比、这种速度非常慢、但计划在未来提高采样速度。 我正在读取中的数据、但它与从 ADC 中获得的数据不匹配。
通道1:来自 PCM1804的 L/R CLK
通道2:MSP 从器件的 STE 信号(源自 L/R CLK)
通道3:PCM1804的数据输出
通道4:数据 CLK
当 STE 信号为高电平时、发送4个字节。 下面是我从总线读取的4个字节、这是不正确的。 我有一个直流信号在 ADC 中播放、因此输出是恒定的、但每次读取时、我都会得到4个不同的字节。
这是我第一次尝试使用 MSP 读取外部 ADC、我查看了 TI 提供的示例代码、但没有一个真正的帮助。 是否有人对在这里要做什么或我应该继续阅读此数据有任何建议? 提前感谢您的所有帮助。 下面是 SPI 设置和尝试读取 ADC 的代码。 如果需要更多信息、请随时提问、因为我确定在发布帖子时忘记了一些内容。
void SPI_CONFIG_ADC () { ASPI_CTL1 |= UCSWRST; //为配置 ASPI_CTL0设置复位位|=(UCMSB | UCSYNC | UCMODE_1); // MSB 优先、同步模式、4引脚 SPI STE 高电平有效 ASPI_CTL1 &=~Ω UCSWRST; //清除复位位位释放 USCI 以进行操作 }
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器以防止超时复位
Init_Startup(); //调用初始化端口、USCI 和时钟
ASSERT_ADC_RST; //将 ADC 置于复位状态
UART0_IE |= UCRXIE; //启用 UART0中断
UART2_IE |= UCRXIE; //启用 UART2中断
__ENABLE_INTERRUPT (); //启用全局中断
取反_ADC_RST; //将 ADC 从复位状态中拉出
Timer_B_DELAY (65000);//延迟大约1.2秒以等待来自 ADC 的有效数据。
__no_operation(); //用于调试
int 计数器= 0; //同步到自由运行的 L/R CLK
while (counter < 3)
{
计数器+= 1;
while (!(P10IN & ADC_LR)){;}
}}
while (!(UCB1IFG & UCRXIFG)){;}//从 ADC 读取4个字节的原始方式。 这是不正确的吗?
ADCOUT[0]= ASPI_RXBUF;
while (!(UCB1IFG & UCRXIFG)){;}
ADCOUT[1]= ASPI_RXBUF;
while (!(UCB1IFG & UCRXIFG)){;}
ADCOUT[2]= ASPI_RXBUF;while (UCB1IFG & UCRXIFG
){;}ADCOUT[2]= ASPI_RXBUF (UCB1IFG = UCB1IFG);while (UCB1UCB1IFG = UCRUCRST_RST_RST_UCRF);ADCST_UCB1 //在读取4个字节
__no_operation ()后将 ADC 重新置位; //用于调试断点
。}

