我现在用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,这个值能正确收到吗?
能否试试读读其他寄存器,写寄存器并读出来,看看错误是不是一样的?