我把P1的8个口作为液晶的并行数据口,但硬件SPI口也在P1上
单片机是STC12C5410AD,我把NRF的4个SPI口也接在了P1的4个硬件SPI上了,可以利用程序的方法使两者不干扰吗?否则只能在其他IO口上用软件SPI了 外部SPI器件的 CS 用别的io就行了 {:shocked:} 自古二楼出真相{:lol:} wkman 发表于 2014-10-13 17:26外部SPI器件的 CS 用别的io就行了
这样的话,也是硬件SPI么,我看IO口描述里有SPI的CS口,那就是说其实可以连其他的么,只要MISO,MOSI,SCK是连在指定的IO口上? SPI的CS不用P1上的IO口就可以了嘛 yoghourt 发表于 2014-10-13 17:37
SPI的CS不用P1上的IO口就可以了嘛
试了下,不行额,我把液晶插上,液晶显示到没问题,但是SPI不能用,NRF检测错误。 CS都没选中,SPI那边应该不能操作啊 Edwardwei 发表于 2014-10-13 18:16
试了下,不行额,我把液晶插上,液晶显示到没问题,但是SPI不能用,NRF检测错误。 ...
这个在启动SPI的时候要重新配置SPI,使用IO口的时候重新配置IO口吧 yoghourt 发表于 2014-10-13 18:29
CS都没选中,SPI那边应该不能操作啊
我把CS放到其他IO口上了啊,我还试了把SCK,MISO,MOSI放在其他口上,可以运行,但是放在P1上,SPI就不行了 yoghourt 发表于 2014-10-13 18:29
CS都没选中,SPI那边应该不能操作啊
忘记说了,我还没有用硬件SPI来做,因为之前有在8952上用软件SPI做过,所以直接移植过来用的。 xiayuan 发表于 2014-10-13 18:31
这个在启动SPI的时候要重新配置SPI,使用IO口的时候重新配置IO口吧
忘记说了,我还没有用硬件SPI来做,因为之前有在8952上用软件SPI做过,所以直接移植过来用的。 你可以先把液晶部分功能关掉,只是用SPI功能,查看是否出错。确定一下是否是因为端口复用引起的 xiayuan 发表于 2014-10-13 18:41
你可以先把液晶部分功能关掉,只是用SPI功能,查看是否出错。确定一下是否是因为端口复用引起的 ...
不是,我没有用硬件SPI功能,而是把那三个IO口当做普通IO口用,用软件SPI通信 Edwardwei 发表于 2014-10-13 18:55
不是,我没有用硬件SPI功能,而是把那三个IO口当做普通IO口用,用软件SPI通信 ...
我的意思是,P1口不用做液晶数据口,仅仅用来做SPI的功能,把两种功能分开调试,如果这样还是不正常的话那么就是电路或者程序的问题,跟P1口用不用做液晶数据口就没有关系。 软件SPI就随便找几个其他口,硬件SPI需要用把CS放其他口上,在CS是高电平时从设备IO是高阻态没影响,要用SPI时软件拉低CS脚,基本不影响传输速度。 xiayuan 发表于 2014-10-13 19:30
我的意思是,P1口不用做液晶数据口,仅仅用来做SPI的功能,把两种功能分开调试,如果这样还是不正常的话 ...
我去掉了液晶程序,用LED灯指示,把SPI口还是放在P1上,然后运行可以正常连接,但是把液晶插上后,就不行了 在液晶的数据口加一片锁存器 xiayuan 发表于 2014-10-13 20:11
在液晶的数据口加一片锁存器
算了,加锁存太麻烦,我还是把液晶的那三个接口换下,因为所有的AD口都在P1上,以后要用AD的话还是会有问题 Edwardwei 发表于 2014-10-13 20:44
算了,加锁存太麻烦,我还是把液晶的那三个接口换下,因为所有的AD口都在P1上,以后要用AD的话还是会有问 ...
如果IO口够用的话的确没必要这样做,数据口复用最好加锁存 xiayuan 发表于 2014-10-13 21:19
如果IO口够用的话的确没必要这样做,数据口复用最好加锁存
我是在一个很小的洞洞板上做的,没有位置去放锁存的,几乎是没有其他空间了。
不过我刚刚试了试,发现把CS放其他口,SPI不动,然后每次写完液晶后把P1口全置1,发现可以用了,但是奇怪的是,如果开头运行LCD初始化,SPI就不能工作,但是去掉那个初始化,不断电下载程序(LCD没断电,还保存初始化的配置),可以完美运行显示,怎么写液晶都行,就是不能在开头运行LCD初始化。所以如果断电,就要加上初始化下载后,再去掉初始化不断电下载。。。。 我快错乱了。。。 是不是LCM锁住IO了?修改LCM的CS或者rst脚的电位看看 Edwardwei 发表于 2014-10-13 18:35
忘记说了,我还没有用硬件SPI来做,因为之前有在8952上用软件SPI做过,所以直接移植过来用的。 ...
CS无效时,直接忽略SPI线上的变化就好了啊 Edwardwei 发表于 2014-10-13 18:32
我把CS放到其他IO口上了啊,我还试了把SCK,MISO,MOSI放在其他口上,可以运行,但是放在P1上,SPI就不行了 ...
那可能是其他方面的原因。 Edwardwei 发表于 2014-10-13 21:58
我是在一个很小的洞洞板上做的,没有位置去放锁存的,几乎是没有其他空间了。
不过我刚刚试了试,发现把C ...
你的P1口有没有配置啊,那个单片机IO口有配置寄存器 也要控制液晶屏的cs CS口的时序对了就行,但注意这些程序不要并行 xiayuan 发表于 2014-10-14 18:42
你的P1口有没有配置啊,那个单片机IO口有配置寄存器
所有IO口默认就是准双向口,应该没有必要配置。而且我也运行成功了,就是只要程序开有LCD的初始化,SPI就有问题了,这个问题我就搞不懂了。初始化程序又不能不加。。。
最后我还是把那三个口换成其他三个口了,然后把液晶的程序改了一下,运行OK。这三个口以后还得用作AD口,毕竟所有AD口都在P1上。。
页:
[1]