TI中文支持网
TI专业的中文技术问题搜集分享网站

AM335X和ADS8634通过SPI口进行读写操作,发现数据错位,求解

我现在用AM3352和ADS8634通过SPI口进行读写操作,发现如下问题(参考图):

1是clk

2.是mosi(读06寄存器,命令是0x0D)

3是miso

MISO数据本来第二个字节应该是0x08,在示波器上看到的也是0x08,但在AM335X这里读到的是0x04,好像是被右移了一位。

求解释,谢谢!

Joel Li:

Hi leili,

请在示波器上标注:

channel 1,2,3 分别是什么信号?

time scale是多少?

另外,请注明那一段是需要AM335x读取的数据?应该是什么?实际读到了什么?

Joel Li

Denny%20Yang99373:

你好,SPI有四种模式,不知道你当前配的什么模式?根据信号来看应该配成mode0,可以把相关配置寄存器打印出来看看

Table 24-5. Phase and Polarity CombinationsPolarity (POL) Phase (PHA) SPI Mode Comments0 0 mode0 SPICLK active high and sampling occurs on the rising edge.0 1 mode1 SPICLK active high and sampling occurs on the falling edge.1 0 mode2 SPICLK active low and sampling occurs on the falling edge.1 1 mode3 SPICLK active low and sampling occurs on the rising edge.

lei li9:

回复 Joel Li:

信号1是clk

信号2是mosi

信号3是miso

AM335X读ADS8634的06寄存器,命令是0x0D

MISO的数据应该是0x08,示波器上的信号也是0x08,但AM335X读到的是0x04

(示波器MISO第二个字节是有效数据)

lei li9:

回复 Denny%20Yang99373:

我把SPI1的配置和寄存器数值发给你,如下:

lei li9:

回复 Denny%20Yang99373:

其中变量的定义如下:#define MCSPI_IN_CLK   48000000u

#define MCSPI_OUT_FREQ 10000000u

unsigned  int  chNum = 1

其余的都是startware自身定义的

Denny%20Yang99373:

回复 lei li9:

能否把片选的信号也测出来?

需要片选+CLK+输入 三个结合看一下时序

Denny%20Yang99373:

回复 Denny%20Yang99373:

还可以改一下TCS  看看有没有变化

lei li9:

回复 Denny%20Yang99373:

下面是同等测试条件下的截图

其中:

1是CLK

2是MISO

3是CSN

(仍然是读06寄存器的波形,和上面的图都是对应的)

下面是放大后的波形

lei li9:

回复 Denny%20Yang99373:

TCS改变过不同数值,还是不行

Denny%20Yang99373:

回复 lei li9:

在0x08前面,输入信号上有0X0F,这个值能正确收到吗?

能否试试读读其他寄存器,写寄存器并读出来,看看错误是不是一样的?

赞(0)
未经允许不得转载:TI中文支持网 » AM335X和ADS8634通过SPI口进行读写操作,发现数据错位,求解
分享到: 更多 (0)