智能车制作

标题: NRF905的SPI通讯问题新发现!!!(求高手共同解决)!! [打印本页]

作者: flyeastlxl    时间: 2011-4-30 12:11
标题: NRF905的SPI通讯问题新发现!!!(求高手共同解决)!!
本人最近突然发现
X12的SPI通讯协议的SCK边沿跳变是在发送八个数据位之后,在进过查阅书本发现也是此解释“CPHA置1表示在发送8位数据之后,SCK就产生边延跳变”而NRF905中的SPI通讯协议是当发送完每一位后SCK产生边沿跳变即
void SPI_Write_Byte(char dat) //软件模拟SPI 写
{
  char  i;
  
  
  for(i=0;i<8;i++)
  {
    if(dat&0x80)
      RF905_SPI_PR_MOSI =1;
    else
      RF905_SPI_PR_MOSI =0;
   
   RF905_SPI_PR_SCK=1;
   __delay_us(20);
    dat=dat<<1;
    RF905_SPI_PR_SCK=0;
  }
  

}
(此段为模拟SPI中的程序)
其二,本人发现如果在X12给NRF905写入初始化值之后诺再读出此值将会发现正好读出的为2位255的数并且停入死循环,大家注意初始化值这好是11个字节,大于8而小于16,诺一个字节算一位了话正好符合2个字节并且停入死循环的现象。
以上为本人近日对SPI通讯问题的假设,仅供参考,也希望与各位交流意见
本人QQ:343918087,希望能与诸位一起提高!!

补充内容 (2012-3-19 23:57):
看来大家还是很乐钟于调905呀~~我去年用905来发图片的,但是发现心碎128上的SPI不能用最后用模拟的方法调通了,我个人感觉问题在于心碎128和905的SPI之间通信有问题~~大家要是愿意可以一起在帖子里讨论下,别加我Q了

补充内容 (2012-3-20 00:00):
这也是程序开源的一种精神嘛~~~
我觉得现在可以把模拟发送放入PIT中断中去发送这样可以节省很多时间~就是对模拟发送的每一个位是在中断中写入的这样可以不使用延时程序节省大量时间

补充内容 (2012-3-20 00:06):
我把程序我的程序发在5楼了,大家互相讨论下~~~有什么进展望一起共享~~
作者: 机控狂人    时间: 2011-6-2 20:40
还是不懂。
作者: sonwendi    时间: 2011-6-4 00:19
不太明白你写的什么意思,不过以前老早用51进行905通信一点问题也没有
作者: flyeastlxl    时间: 2012-3-19 23:54
51模拟是没有问题的~但是大神知道的,心碎128上有一个SPI模块用它调,却调不通~~
作者: flyeastlxl    时间: 2012-3-20 00:05
为了体现开源精神我把我905程序发了~~希望大家改成PIT中断发送后可以也发上来给我借鉴下~·
我的程序比较乱~
主机是用PIC877
分机是心碎128~~
不好别喷
程序直接是不能用的~但是子程序的算法和建构是对~~
作者: hlln20100410    时间: 2012-3-31 22:21
要钱有意思吗
作者: 张鹏超    时间: 2012-12-24 10:48
是啊,都开源了还要钱,唉




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2