微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 有关cc254x的I/O口的使用问题

有关cc254x的I/O口的使用问题

时间:10-02 整理:3721RD 点击:

最近我在用cc2540通过SPI读写Flash(SST25VF016B)时遇到了点问题,请教下!

实验环境:首先我是用cc2540裸跑的(没上协议栈),通过I/O口模拟SPI总线。代码在STC15L的51单片机上时正常的,移植到cc2540。遇到两个奇怪的问题:

问题1:我是用P1_5,P1_6和P1_7作为MOSI,CLK和MISO,当我用P1_4和P1_3作为Flash的片选CS端口时,两者均不能正常读出Flash的ID,且读出的结果不一样。而用P1_2作为CS时,可以正确地读出Flash的ID。注(P1DIR = 0x7f,除了MISO设为输入外,其他均设为输出)

问题2:在问题一种,CS采用P1_2引脚时,当P1DIR = 0x7f是,读Flash的ID正常,但如果我将P1DIR = 0x64是则,读出Flash的ID是不正确的。

问题总结:遇到的问题让我觉得片选引脚需要远离SPI总线(P1_2比P1_3/P1_4离SPI总线远些)。而且当I/O不使用时,需要设为输出,而不能设为输入(猜测是输入噪声问题)。

问题的确很奇葩,希望有经验的前辈给点提示,或提供些可参考的资料。

祝好!

对于CC2540不使用协议栈51编程,TI是有提供例程的 包括对SPI口的控制例程

可以参考一下

http://www.ti.com/lit/zip/swrc257

不用的管脚上拉输入

调试时,不要用杜邦线连SPI FLASH,不稳定

WBJ,你提供的链接对我非常有用,我参考了下代码,我现在能用硬件SPI读写Flash(SST25VF016B)了,问题是我发送完数据后没有等待完成,就接受数据!

但我现在发现不管用硬件SPI或IO口模拟发现,从Flash中读出的数据总有些是错的,而且总是那几个,偶尔会读对,这个问题还在解决中

cedar_xuesong ,谢谢你的建议!

我调试的时候的确用的是杜邦线链接Flash的,我目前的问题是,我从Flash中读到的数据有些是正确,有些是错误!我想知道你所说的不稳地是什么原因造成的呢?我猜想是如果降低SPI的读写速率会不会使系统稳定点,实际我发现将SPI的速率从2M降到9600bps还是一样的结果。

希望你能给点详细的说明,或任何有价值的资料!谢谢。。。

建议可以查一下时序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top