x5y4z3 发表于 2018-6-21 11:29:50

楼主的程序是否架构于 uC/OS 或啥 OS 之上?!
若是的话,要请留意关于任务等待号志Semaphore 的使用,不然同一个 SPI 就被两个任务给占用了!

watercici 发表于 2018-6-21 11:36:15

x5y4z3 发表于 2018-6-21 11:29
楼主的程序是否架构于 uC/OS 或啥 OS 之上?!
若是的话,要请留意关于任务等待号志Semaphore 的使用,不 ...

没有,我这是不带系统的

watercici 发表于 2018-6-21 11:36:39

x5y4z3 发表于 2018-6-21 11:29
楼主的程序是否架构于 uC/OS 或啥 OS 之上?!
若是的话,要请留意关于任务等待号志Semaphore 的使用,不 ...

谢谢您!

wenyangzeng 发表于 2018-6-21 12:32:25

watercici 发表于 2018-6-21 10:15
是不同的片选信号,OLED接在了SPI的NSS引脚(软件模式),W25Q16接在了普通IO上 ...

应该不接到NSS上,与W25Q16同样另外接一个IO口,这样2个SPI片选条件才一致。

馒头弟 发表于 2018-6-21 15:29:27

其他外设功能初始化先屏蔽,一个个打开,再测试看看

xmshao 发表于 2018-6-21 15:49:52

1. 确认管脚配置上没有冲突;
2.你到底是时钟紊乱还是发送数据紊乱,如果前者硬件及配置原因居多。如果后者,你的
SPI数据是怎样发送的,有无受到其它中断打断或干扰?

toofree 发表于 2018-6-21 16:41:01

从来就没说过用的什么芯片

zhjb1 发表于 2018-6-21 17:35:18

看了讨论大致了解一点了。SPI方式硬件中断处理两个或以上事件是不会有问题的。我想的可能原因与前边有位网友的一件相似——用1个SPI处理两个事件上排他性做的不够。是否考虑硬件上1个IO口或NSS信号非门给另一个片子,是两者在硬件上排他性,如果此两者也需要控制,在再加个与信号使能这两个事件就应该没有问题了。软件模拟,可以考虑采用状态机的模式来告知OLED或FLASH分别执行。仅供参考。试试吧

watercici 发表于 2018-6-22 09:31:11

butterflyspring 发表于 2018-6-14 10:39
把调用函数发一下?我不知道你之前的贴叫什么..

您好,问题算是解决了,但是我不知道原因,就是有一个和SPI无关的函数调用错了,就是上面帖子中PWM波的两个函数,本来应该用第二个,结果我写成了第一个,改了之后就没事了。

watercici 发表于 2018-6-22 09:31:36

TLLED 发表于 2018-6-14 14:10
可以单独写一个SPI通信程序,单独测试,其他端口不用,查找程序上那儿配置不对。 ...

单独测试是没有问题的
页: 1 2 [3] 4
查看完整版本: SPI通信出现时钟紊乱