LD3320的SPI模式操作问题
这几天在弄这块小东西,X宝买回来的98块钱例程是并行方式操作的,想着改成串行。
但根据官方资料和各种例程,老是寄存器读错。
有没有人真正用过这个芯片,而且是SPI方式操作的,给个指点。
跪谢了哈。
到时候我这个调好了也把程序放上来。 X宝卖家应该知道。正想搞这个片子,不知道识别效果怎么样 X宝卖家也没用过SPI。叫我试试。 上传一下SPI的那一部分。其他的跟官方的大同小异,就不上传了,可以到官方那下载。
注意:LD_A0那一句,那个在官方里面是没有提到的,资料也说那个是并行的。
但是,没那句真的就不行。LZ也是一时脑袋发热试了一下,发现神奇的可以了。
void SPI_WriteByte(unsigned char Data)
{
unsigned char i;
LD_A0 = 1; //这个卡了好几天,没这一句是不行的。资料里面这个是并行的数据和地址选择,串行没用
for(i=0;i<8;i++)
{
if(Data & 0x80)
{
LD_SDI = 1;
}
else LD_SDI = 0;
delay();
LD_SDCK = 0;
delay();
Data <<= 1;
LD_SDCK = 1;
}
}
unsigned char SPI_ReadByte(void)
{
unsigned char i;
unsigned char Data = 0;
LD_A0 = 0; //SPI也要这一句。我试出来的。 (妈蛋,官方给的SPI驱动资料没有这一句)
for(i=0;i<8;i++)
{
Data <<= 1;
if(LD_SDO)
{
Data |= 0x01;
}
delay();
LD_SDCK = 0;
delay();
LD_SDCK = 1;
}
return Data;
}
void LD3320_Write(unsigned char Addr,unsigned char Data)
{
unsigned char Com = 0x04;
LD_SPIS = 0;
LD_SCS = 0;
delay();
SPI_WriteByte(Com);
SPI_WriteByte(Addr);
SPI_WriteByte(Data);
delay();
LD_SCS = 1;
}
unsigned char LD3320_Read(unsigned char Addr)
{
unsigned char Com = 0x05;
unsigned char Data = 0;
LD_SPIS = 0;
LD_SCS = 0;
delay();
SPI_WriteByte(Com);
SPI_WriteByte(Addr);
Data = SPI_ReadByte();
LD_SCS = 1;
delay();
return Data;
}
实测效果如何?
错误率高吗? ordinary 发表于 2014-12-9 09:07
实测效果如何?
错误率高吗?
四米的距离,测试了几个简单的开关灯。
挺短的词语。还是挺准的。 tianzhiying 发表于 2014-12-9 13:24
四米的距离,测试了几个简单的开关灯。
挺短的词语。还是挺准的。
感谢答复,
这样的灵敏度和距离,做个声控的台灯玩应该没问题了 我也购了一个,在物流中 我看微雪的例程SPI并没有用到A0,也很正常。 alwxkxk 发表于 2015-2-12 16:04
我看微雪的例程SPI并没有用到A0,也很正常。
我也不知道为什么?
我自己试过,没那个就不行。
用别人的电路板试过了,后来自己画板也是。
页:
[1]