[問題] Ardino SPI傳輸問題
各位版友你們好,小弟在做字庫晶片與微處理器SPI的溝通
使用以下的函式。
void spi_transfer(volatile byte data)
{
SPDR = data; // Start the transmission
while (!(SPSR & (1<<SPIF))) // Wait the end of the transmission
{
};
//return SPDR; // return the received byte
}
byte ReadByte(void){ //讀取8Bit
while(!(SPSR&(1<<SPIF))){
return SPDR;
};
}
//以下是我的主程式
void loop{
for(int i=0 ;i<1;i++){
spi_transfer(a[i]);
}; //將a陣列內的編碼傳到IC(a[3]={0x03,0xA4,0x40};) //0x03晶片起始
// A440為BIG5 一的編碼
str[0]=ReadByte(); //str為全域變數用來接收回傳值
for(int i=0; i<32;i++)
Serial.print(str[i],HEX); //顯示回傳的值
}
小弟做了以上測試 str[0]確實有改變。
而改變為了完整接收32bit,更動接收函式
void ReadByte(void){
for(int i=0; i<4;i++){
while(!(SPSR&(1<<SPIF))){
str[i] = SPDR;
};
}
}
或在主函式使用
for(int i=0 ;i<32 ;i++){
str[i]=Read byte();
}
做了以上更動,只有讀8bit有改變原來str[0]的值,剩下連回傳都沒有。
請問板友可以建議該怎麼做嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.143.145.84
→
11/18 00:04, , 1F
11/18 00:04, 1F
→
11/18 00:05, , 2F
11/18 00:05, 2F
→
11/18 00:06, , 3F
11/18 00:06, 3F
→
11/18 00:07, , 4F
11/18 00:07, 4F
→
11/18 23:34, , 5F
11/18 23:34, 5F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章