TI专家,您好:
我用两块omapl138通过SPI接口相连,一个主模式,一个从模式,使用三条线SCLK,SIMO,SOMI。从模式的开发板可以接收到
主模式发来的数据,但是数据不正确,都是0xff,主模式接收到从模式的数据也不正确。两块板子在loopback模式下都可以
正确工作,极性和相位也是相同设置,而且没有使用中断或者EDMA。请问这是什么原因?期待您的回答。
lingyi:
回复 Shine:
你好,我想问下,OMAPL138芯片作为Master使用SPI(4pin模式:MISO、MOSI、SCLK、CS)发送数据,初始化已经配置了,每次Mater使用SPIDAT0发送16bit数据,在MOSI口和SCLK使用示波器看波形,SCLK总是会超前MOSI数据一个时钟周期,如果SCLK正常的话,MOSI的串行数据是正确的,问题就是:SCLK为什么总是超前MOSI数据一个时钟周期?求解啊,
Shine:
回复 lingyi:
请问你的clock phase和polarity是怎么配的?看一下下面文档
30.2.11.3 Clock Phase and Polarityhttp://www.ti.com/lit/ug/spruh77a/spruh77a.pdf
lingyi:
回复 Shine:
4种模式都试了,现在就是想产生CLK空闲状态为低电平,上升沿时外部设备可以从芯片的SIMO口采数据,
,
理应配成0:1这种模式,但是实际输出CLK与SIMO错位了,CLK慢了1个周期,也就是图上MSB没有CLK对应,最后的一个CLK无有效数据对应,
对了,现在我设置的是16bit数据发送形式,
Shine:
回复 lingyi:
可以把SPI寄存器的配置贴出来吗?
loopback模式下正常吗?
yi ling:
回复 Shine:
您好:
我使用OMAPL138的SPI给FPGA下载bit文件;暂时先调试SPI问题,输出的clock和SIMO数据时序不对啊;现配置如下:
SPIGCR1.MOD_SEL=0X03;
SPIGCR1.LOOPBACK=0;其他为0;
SPIPC0.CLKFUN=1;
SPIPC0.SIMOFUN=1;
SPIPC0.SOMIFUN=1;其他为0;
SPIPC1.SCS0DIR=0X03;
SPIPC1.CLKDIR=1;
SPIPC1.SIMODIR=1;其他为0;
SPIFMT[0].CHARLEN=0X10;(0x08也试了);
SPIFMT[0].PRESCALE=24;
SPIFMT[0].PHASE=1;
SPIFMT[0].POLARITY=0;(FPGA现在要求为上升沿获得数据)
SPIFMT[0].SHIFTDIR=0;//MSB;其他为0
SPIGCR.ENABLE=1;
现在示波器显示clock和SIMO数据时序:clock与SIMO相差了个周期数据才会正确,现在达不到spruh77a.pdf中所提到的效果
TI中文支持网



