美文网首页
ATTiny24/44/84 使用USI接口实现SPI发送功能

ATTiny24/44/84 使用USI接口实现SPI发送功能

作者: 沧海一声笑的DIY宇宙 | 来源:发表于2018-02-22 20:36 被阅读0次

    USI发送数据使用的寄存器USIDR和接收是同一个。

    实现发送的功能更简单点。

    连接方式,MEGA设为slave。

    ATTiny   MEGA

    DO         MOSI

    USCK     SCK

    PA0         SS

    首先把SCK引脚和DO引脚设为输出,另外需要设置片选的ss。由于Tiny没有ss脚,随便选个脚,用软件的方式实现吧。

    uint8_ttransfer(uint8_t spiData)

    {

      // 设置需要传送的数据

      USIDR = spiData;

      //

      USISR = _BV(USIOIF);

    do{

     // 这里USICLK设置为1后,会让位移寄存器进行一次位移,也就是发送1bit的数据。这里看起来像是传送速率的控制

    // USITC是USCK接口产生时钟

    USICR = _BV(USIWM0) | _BV(USICS1) | _BV(USICLK) | _BV(USITC);

     // 这里用USIOIF来做为发送是否完成的检测

    }while((USISR & _BV(USIOIF)) == 0);

    returnUSIDR;

    }

    这里发送完后就能收到数据。

    相关文章

      网友评论

          本文标题:ATTiny24/44/84 使用USI接口实现SPI发送功能

          本文链接:https://www.haomeiwen.com/subject/glxzzxtx.html