nrf905能否直接用spi发送数据呢

楼主
nrf905能否直接用spi发送数据呢
如题,我在网上看了很多有关msp430和nrf905的收发程序,发现几乎有一个共同点,就是都喜欢用单片机的io口模拟spi口。
程序如下:
//*****************SPI 读**********************************//
uchar SPI_READ(void)
{
  uchar bit_ctr,byte;
  for(bit_ctr=0;bit_ctr<8;bit_ctr++)   // output 8-bit
         {
          byte = (byte << 1);
          IO_Set_SCK();                 // Set SCK high..
          if((MISO & P3IN)==MISO)   byte |=1;
             else   byte&=~1;
          IO_Clear_SCK();              // ..then set SCK low again
           
         }
    return(byte);                          // return read byte
}
//***********************SPI 写***************************//
void SPI_WRITE(uchar byte)
{
     uchar bit_ctr;
     for(bit_ctr=0;bit_ctr<8;bit_ctr++)   // output 8-bit
         {
          if(BIT7 == (byte & 0x80))   IO_Set_MOSI();
             else  IO_Clear_MOSI();
          IO_Set_SCK();
          byte = (byte << 1);           // shift next bit into MSB..
          IO_Clear_SCK();
         }
 }
但是大部分msp430系列本来就带有spi口,不知道他们为何要用I/O口模拟SPI口。spi口速度肯定要比那些模拟的速度快啊,小弟为此十分迷茫。
另外这个帖子 http://www.microcontrol.cn/bbs/a/a.asp?B=100&ID=32059&q=1&r=19795,
那位老大曾经用spi调试出来过 程序如下:
//===============NRF905 SPI读函数==================
uchar SpiRead(void)
{
  U1TXBUF=0;
  while(!(U1TCTL&TXEPT));
  return U1RXBUF;
}
//==============NRF905 SPI写函数==================
void SpiWrite(uchar send)
{  
  U1TXBUF=send;
  while(!(U1TCTL&TXEPT)); //等待发送器为空
}
但小弟没有调试成功 不知道是否是晶振的问题 偶的晶振是32768hz
试问 nrf905能否直接用spi发送接收数据呢 谢谢各位大哥大姐们指教
1楼
用模拟串口的比如SPI、IIC使用起来十分方便,移植也很方便就搞定。CPU方面只能说没占用CPU资源;但速度也不会慢不了多少;由于软件模拟的原因,很多时序动作都是由用户控制;如果只要低层的子程序设计好了,应用起来十份方便;我也习惯用这种用法。
至于从器件是否适合用于SPI这可根据从器件手册看看是否适合就可以了。
2楼
谢谢DC老大赐教 小弟的也就模拟的成功了,就是spi一直不成功,估计还是NRF905 SPI读写函数的问题,我再改下试试。
spi能否用低频晶振呢,请老大指教一下
3楼
你所说的低频晶振是指32768HZ吗?如果是指这个的话是没问题的,可以用。
若你指低频不确定是否可用,难道高频晶体你就可以用了?
还是你的串行模块你还没搞懂部分的使用?
我初步估计不太像是时钟源问题,建议你看看初始化部分及硬件IO部分。
4楼
DC新年好啊
谢谢DC了  我再试试 谢谢大师解答

电脑版 Page created in 0.0625 seconds width 2 queries.