|
本帖最后由 any_014 于 2016-1-30 14:46 编辑 一个板子上有多个SPI元件,有一个元件通讯不对,研究了多半天,才发现这个是SCL下降沿时采样的,其他的都是上升沿时采样。 如果用硬件SPI的话,如何解决这个问题?每次和这个元件通讯时,先改下SPI设置? ---------------------------------20160130--------------------------------- 控制这个芯片还是有问题,更新下控制时序图及手册。
ADG738 .pdf
(103.64 KB, 下载次数: 1)
|
微信公众号
手机版
现在是只让通道1导通,结果测试,过一会就是通道2导通了。
8个导通通道和SPI发送的8位数的位对应。随意怀疑是通讯采样时出错了。
若只是轮询的话,只要切换模式之后清一下读取数据寄存器清一下就好
不跑OS。
为什么要清读取数据寄存器?
是为了避免切换模式的时候,发生其他异常,清一下数据寄存器和标志位是有必要的。
谢谢,受教了。
在调试用SPI3读写函数前,关断SPI3,然后配置为空闲时SCL为低电平,使能SPI3;
然后调用SPI3读写函数,和ADG738通讯;
通讯结束后关断SPI3,更改SPI模式为空闲时SCL为高电平,使能SPI3.
结果,通讯不成功,用示波器观测了下MOSI和SCL信号,不同步,有时候SCL信号出现了几个以后才有MOSI信号,并且这个间隔是在变化的。
现在是每1秒通讯一次,感觉SCL空闲电平的极性没有变化,倒是MOSI的空闲电平变化了...
发现ADG738Delay(1);这个函数执行时间有4ms左右,真是慢啊。