gpt4 book ai didi

c - 终端输出不是逻辑分析仪得到的

转载 作者:行者123 更新时间:2023-11-30 17:26:20 25 4
gpt4 key购买 nike

这应该很容易,但它让我难住了。我有一个物理板,我正在用 C 语言编程,以通过 SPI 从另一个芯片读取信息。当我探测正确的引脚时,我收到以下代码字:

0xD54,但它在此附近略有波动。没关系,因为它为我提供了模拟信号的数字表示。值 0xD54 或多或少是正确的值。绝对是在正确的范围内。

我的程序的终端输出给出了诸如 0xAA8 之类的值。肯定不在同一个范围内。这是代码:

uint32_t i;
uint8_t uc_pcs;
static uint16_t data;

uint16_t *p_buffer;

p_buffer = p_buf;

for (i = 0; i < size; i++) {
spi_write(SPI_MASTER_BASE, p_buffer[i], 0, 0);
/* Wait transfer done. */
while ((spi_read_status(SPI_MASTER_BASE) & SPI_SR_RDRF) == 0);
spi_read(SPI_MASTER_BASE, &data, &uc_pcs);

p_buffer[i] = data;
printf("Data = %X\n\r", *(p_buffer + i));
}

这是一些原始数据。左边的数据是探测电路板的正确数据。右边的数据就是通过上面的代码在终端接收到的数据。

D51    AA2
D4F A9E
D52 AA4
D52 AA4

最佳答案

像往常一样,我在提出问题后找出了我的问题。我想把事情写出来真的很有帮助。通常我会删除该帖子,但我发现这个解决方案有点幽默,也许还很有趣。

比较 D51 和 AA2,我注意到...AA2 只是 D51 左移。什么?为什么我的数据左移?我从来没有在我的代码中这样做过。因此,我以另一种方式将其移回以进行补偿并获得正确的值。

那时我就意识到了。我的时钟极性设置是向后的。它只读取了 12 位中的 11 位,所以我读取了所有内容,但数量级有所偏差。

关于c - 终端输出不是逻辑分析仪得到的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com