在线情况
楼主
  • 头像
  • 级别
    • 积分6
    • 经验182
    • 文章6
    • 注册2009-09-23
    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发送接收数据呢 谢谢各位大哥大姐们指教
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    用模拟串口的比如SPI、IIC使用起来十分方便,移植也很方便就搞定。CPU方面只能说没占用CPU资源;但速度也不会慢不了多少;由于软件模拟的原因,很多时序动作都是由用户控制;如果只要低层的子程序设计好了,应用起来十份方便;我也习惯用这种用法。
    至于从器件是否适合用于SPI这可根据从器件手册看看是否适合就可以了。
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分6
      • 经验182
      • 文章6
      • 注册2009-09-23
      谢谢DC老大赐教 小弟的也就模拟的成功了,就是spi一直不成功,估计还是NRF905 SPI读写函数的问题,我再改下试试。
      spi能否用低频晶振呢,请老大指教一下
      微控网感谢您的参与
      在线情况
      4
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      你所说的低频晶振是指32768HZ吗?如果是指这个的话是没问题的,可以用。
      若你指低频不确定是否可用,难道高频晶体你就可以用了?
      还是你的串行模块你还没搞懂部分的使用?
      我初步估计不太像是时钟源问题,建议你看看初始化部分及硬件IO部分。
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      在线情况
      5
      • 头像
      • 级别
        • 积分6
        • 经验182
        • 文章6
        • 注册2009-09-23
        DC新年好啊
        谢谢DC了  我再试试 谢谢大师解答
        微控网感谢您的参与
        Powered by LeadBBS 9.2 .
        Page created in 0.9380 seconds with 5 queries.