發送的數據存在buf[]數組里面,但是就是會全部輸出低電平,不是buf里面的數據。
采用普通I/O口模擬SPI通信,是時序問題嗎?主要是芯片手冊里面沒有參考程序 就很難寫
void mbi_send_buf1(uint16_t *buf,unsigned char byte)
{
unsigned char i;
SDI_L;
LACH_L;
DCLK_L
OE_H;
//移入移位寄存器 //byte片數
for (i=0;i<(byte*16);i++)
{
DCLK_L;
//delay_us(5);
//0x80:1000 0000 取出高字節數 后續補零 一位一位向左移動
if((*(buf+(i/16)) << (i%16))&0x8000)
{
SDI_H;//DS1_HIGH;
}
else
{
SDI_L;//DS1_LOW;
}
DCLK_H;
//delay_us(5);
}
//存入鎖存器中
LACH_H;
//delay_us(5);
LACH_L;
//delay_us(5);
OE_L;
//delay_us(5);
//OE_H;
}
|