发送的数据存在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;
}
|