[ZLG-ARM] lpc2106和max3100通信问题

[复制链接]
2934|8
 楼主| oasiswoo 发表于 2008-3-20 18:42 | 显示全部楼层 |阅读模式
用SPI方式和max3100通信,lpc2106做主,CPOL=0;CPHA=0;通信程序如下,数据不对,大家看是什么问题<br />uint16&nbsp;MSpiSendData(uint16&nbsp;m_data)<br />{<br />&nbsp;&nbsp;uint16&nbsp;Rec_Data;<br />&nbsp;&nbsp;uint16&nbsp;Rec_DataH,Rec_DataL;<br />&nbsp;&nbsp;IOCLR&nbsp;=&nbsp;CS_SPI;<br />&nbsp;&nbsp;SPI_SPDR&nbsp;=&nbsp;(m_data&gt&gt8)&0xff;<br />&nbsp;&nbsp;while(0==(SPI_SPSR&0x80));&nbsp;&nbsp;&nbsp;//等待SPIF置位,即等待数据发送完毕<br />&nbsp;&nbsp;Rec_DataH&nbsp;=&nbsp;SPI_SPDR;<br />&nbsp;&nbsp;SPI_SPDR&nbsp;=&nbsp;m_data&0xff;<br />&nbsp;&nbsp;while(0==(SPI_SPSR&0x80));<br />&nbsp;&nbsp;Rec_DataL&nbsp;=&nbsp;SPI_SPDR;<br />&nbsp;&nbsp;IOSET&nbsp;=&nbsp;CS_SPI;<br />&nbsp;&nbsp;Rec_Data&nbsp;=&nbsp;(Rec_DataH&lt&lt8)&0xff00+Rec_DataL;<br />&nbsp;&nbsp;return(Rec_Data);<br />}
zlgarm 发表于 2008-3-20 19:07 | 显示全部楼层

oasiswoo,您好!

您可以试试如下代码:<br /><br />uint16&nbsp;MSpiSendData(uint16&nbsp;m_data)<br />{<br />&nbsp;&nbsp;uint16&nbsp;Rec_Data;<br />&nbsp;&nbsp;uint16&nbsp;Rec_DataH,Rec_DataL;<br /><br />&nbsp;&nbsp;IOCLR&nbsp;=&nbsp;CS_SPI;<br /><br />&nbsp;&nbsp;SPI_SPDR&nbsp;=&nbsp;(m_data&gt&gt8)&0xff;<br />&nbsp;&nbsp;while(0==(SPI_SPSR&0x80));&nbsp;&nbsp;&nbsp;//等待SPIF置位,即等待数据发送完毕<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;SPI_SPDR&nbsp;=&nbsp;m_data&0xff;<br />&nbsp;&nbsp;while(0==(SPI_SPSR&0x80));<br />&nbsp;&nbsp;Rec_DataH&nbsp;=&nbsp;SPI_SPDR;<br /><br />&nbsp;&nbsp;SPI_SPDR&nbsp;=&nbsp;0xFF;<br />&nbsp;&nbsp;while(0==(SPI_SPSR&0x80));<br />&nbsp;&nbsp;Rec_DataL&nbsp;=&nbsp;SPI_SPDR;<br /><br />&nbsp;&nbsp;IOSET&nbsp;=&nbsp;CS_SPI;<br /><br />&nbsp;&nbsp;Rec_Data&nbsp;=&nbsp;(Rec_DataH&lt&lt8)&0xff00+Rec_DataL;<br />&nbsp;&nbsp;return(Rec_Data);<br />}
 楼主| oasiswoo 发表于 2008-3-20 19:51 | 显示全部楼层

非常感谢,我试后给您答复

  
 楼主| oasiswoo 发表于 2008-3-21 12:01 | 显示全部楼层

效果一样啊,没有改变

  
lyl831015 发表于 2008-3-22 19:39 | 显示全部楼层

数据不对?

什么数据不对?主机发送出来的数据吗?
 楼主| oasiswoo 发表于 2008-3-23 15:46 | 显示全部楼层

spi回的数据不对

spi回的数据不对,所以我怀疑发的数据即3100接受的数据也不对,结果是无法完成对3100的配置
zcq30 发表于 2008-3-23 20:58 | 显示全部楼层

建议使用SC16IS750,有现成的代码。

Max3100那么贵那么不好卖的东西被你找到了。
zlgarm 发表于 2008-3-24 21:08 | 显示全部楼层

SPI部件

oasiswoo&nbsp;您好:<br />&nbsp;&nbsp;&nbsp;您的问题应该是时序格式没有选择正确造成的。关于时序格式的说明您可以参考以下说明来做。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;duty:zlgarm_zhanghuping&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| oasiswoo 发表于 2008-3-25 19:36 | 显示全部楼层

这些时序我都试验过

max3100的资料上是上升沿数据输出,下降沿数据输入,那么对于做主的2106而言就是上升沿数据输入下降沿数据输出,那么就是CPHA=0,CPOL=0;这个时序在以前用C8051F06系列单片的SPI时没有任何问题。如果我用I/O口线模拟这种方式,通信完全没有问题,但是就是用2106的SPI不能通信。而且别的时序组合方式我都做过试验,也是不行。现在不知道问题出在什么地方,只能暂时用口线的方式,用口线方式中断多了会不会丢数据,实在不行下次就换芯片了。如果有朋友使用过这两个芯片通信,我们可以交流一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部