tianzhiying 发表于 2014-12-5 12:06:15

LD3320的SPI模式操作问题

这几天在弄这块小东西,X宝买回来的98块钱
例程是并行方式操作的,想着改成串行。
但根据官方资料和各种例程,老是寄存器读错。

有没有人真正用过这个芯片,而且是SPI方式操作的,给个指点。

跪谢了哈。
到时候我这个调好了也把程序放上来。

ding_ding0304 发表于 2014-12-5 13:21:06

X宝卖家应该知道。正想搞这个片子,不知道识别效果怎么样

tianzhiying 发表于 2014-12-5 14:57:30

X宝卖家也没用过SPI。叫我试试。

tianzhiying 发表于 2014-12-8 09:55:44

上传一下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:34

实测效果如何?
错误率高吗?

tianzhiying 发表于 2014-12-9 13:24:45

ordinary 发表于 2014-12-9 09:07
实测效果如何?
错误率高吗?

四米的距离,测试了几个简单的开关灯。
挺短的词语。还是挺准的。

ordinary 发表于 2014-12-10 08:33:46

tianzhiying 发表于 2014-12-9 13:24
四米的距离,测试了几个简单的开关灯。
挺短的词语。还是挺准的。

感谢答复,
这样的灵敏度和距离,做个声控的台灯玩应该没问题了

hzh 发表于 2014-12-12 19:53:23

我也购了一个,在物流中

alwxkxk 发表于 2015-2-12 16:04:39

我看微雪的例程SPI并没有用到A0,也很正常。

tianzhiying 发表于 2015-2-12 17:19:57

alwxkxk 发表于 2015-2-12 16:04
我看微雪的例程SPI并没有用到A0,也很正常。

我也不知道为什么?
我自己试过,没那个就不行。
用别人的电路板试过了,后来自己画板也是。
页: [1]
查看完整版本: LD3320的SPI模式操作问题