dandelion 发表于 2014-5-9 21:01:06

spiwrite相关问题

想问下这段代码怎么理解?
spiwrite(uint8_t c) {
    int8_t i;
    digitalWrite(_clk, HIGH);

    for (i=0; i<8; i++) {
      digitalWrite(_clk, LOW);
      if (c & _BV(i)) {
            digitalWrite(_mosi, HIGH);
      } else {
            digitalWrite(_mosi, LOW);
      }
      digitalWrite(_clk, HIGH);
    }
}

dandelion 发表于 2014-5-9 21:01:36

麻烦帮帮忙啊

eddiewwm 发表于 2014-5-9 22:57:39

嘗試一下:

spiwrite(uint8_t c) {                            //函數帶著值"c"進入
    int8_t i;                                       //本地 變數i
    digitalWrite(_clk, HIGH);               //輸出腳 "_clk" 輸出高電平

    for (i=0; i<8; i++) {                      // 8次循環
      digitalWrite(_clk, LOW);             //輸出腳 "_clk" 輸出低電平
      if (c & _BV(i)) {                         //以循環次數作"c"的位元位置,並檢查其元值,
            digitalWrite(_mosi, HIGH);   // 若是"1",輸出腳 "_mosi" 輸出高電平
      } else {                                 //若是"0"
            digitalWrite(_mosi, LOW);    //輸出腳 "_mosi" 輸出低電平
      }
      digitalWrite(_clk, HIGH);         //輸出腳 "_clk" 輸出高電平
    }
}

全個函數的功能,就是以帶入的值,把它的位元值逐一在"_mosi" 輸出腳輸出,而在每位元輸出前前"_clk" 會先變低電平,在"_mosi"腳輸出值後,以"_clk" 腳輸出高電平作確認。

智能创客 发表于 2014-5-9 23:30:49

spi的函数。{:soso_e100:}

dandelion 发表于 2014-5-10 10:11:19

eddiewwm 发表于 2014-5-9 22:57 static/image/common/back.gif
嘗試一下:

spiwrite(uint8_t c) {                            //函數帶著值"c"進入


如果C = 0x02,那么输出的值是多少呢?谢谢了

pathletboy 发表于 2014-5-10 10:50:40

这是IO模拟SPI,C = 0x02的话,那输出就是0x02

dandelion 发表于 2014-5-10 10:57:19

pathletboy 发表于 2014-5-10 10:50 static/image/common/back.gif
这是IO模拟SPI,C = 0x02的话,那输出就是0x02

嗯嗯,谢谢啦

dandelion 发表于 2014-5-10 10:59:22

dandelion 发表于 2014-5-10 10:57 static/image/common/back.gif
嗯嗯,谢谢啦

你好,我还想问下,如果用LPC2103 + PN532实现读写卡功能,我怎么判断主机成功给丛机发送命令了?

pathletboy 发表于 2014-5-10 11:52:33

dandelion 发表于 2014-5-10 10:59 static/image/common/back.gif
你好,我还想问下,如果用LPC2103 + PN532实现读写卡功能,我怎么判断主机成功给丛机发送命令了?

应答属于软件协议上的事情,你看软件协议上有没有应答。
页: [1]
查看完整版本: spiwrite相关问题