你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
waiman-156411 发表于 2016-1-26 17:06 如果是跑OS,多线程操作的话就要注意一些。 若只是轮询的话,只要切换模式之后清一下读取数据寄存器清一下 ...
any_014 发表于 2016-1-26 17:19 不跑OS。 为什么要清读取数据寄存器?
waiman-156411 发表于 2016-1-27 11:29 是为了避免切换模式的时候,发生其他异常,清一下数据寄存器和标志位是有必要的。 ...
现在是只让通道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左右,真是慢啊。