我现在是利用LPC1114的SSP口和一个AD来通信,此AD有四个通道,但是目前我发送“VOLTAGE”通道以进行此通道的转换,但是每次回来存放到b[]里的数据总是第一通道的数据(VOLTAGE是第三通道),不知道采用我写的程序的方式能不能正常读SSP的数据呢?请指教
ps:此AD上电后第一次转换总是转换第一通道,每次发送的转换通道号其实是下一次要转换的通道,此次得到的数据是上一次设置的通道的数据。按我的程序b[]里的数据应为{第一通道,第三通道,第三通道},但目前都是第一通道。AD是ADC124S051,TI的
-
pb.txt
(2013-2-20 19:57 上传)
484 Bytes, 下载次数: 6
代码
回复 楼主 milan111 的帖子
SSP是无法知道读写数据是否正确,一般可以采用逻辑分析仪来测试。至于AD转换,看是否有办法逐个通道转换实验,看看是否可以单独控制每一通道。再查找问题所在。
回复 沙发 zhaojun_xf 的帖子
我发现对DR进行操作,或者说读操作(这点还没确定)后就会把DR全清0,比如进行 LPC_SSP0->DR > 100 的操作后,DR就变全0了,导致判断句后对DR的操作出问题。再比如执行a=LPC_SSP0->DR,b=LPC_SSP0->DR后,a有值,b为0
请问是这样么?
回复 板凳 milan111 的帖子
你的问题我没看太懂,不过读寄存器确实会清空寄存器,而且如果想SSP写完数据后,不管是否要获取SSP总线的数据都必须读取数据。
回复 4楼 zhaojun_xf 的帖子
1.读DR会清空它,是这意思么?那LPC_SSP0->DR >100这句代码算读DR么?
2.为什么写完DR后,不管要不要数据都要读DR呢?不读有什么问题呢?
回复 5楼 milan111 的帖子
是要清空,会出现什么情况,你可以自己试试。。。。。。。。