lt8900驱动及应用编程指南for初学者_第1页
lt8900驱动及应用编程指南for初学者_第2页
lt8900驱动及应用编程指南for初学者_第3页
lt8900驱动及应用编程指南for初学者_第4页
lt8900驱动及应用编程指南for初学者_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#define uchar unsigned charuchar dataH,dataL;/定义全局变量用来保存数据/*脚位定义*/sbit SPI_CLK = P14;sbit SPI_MISO = P15; sbit SPI_MOSI = P22;sbit SPI_SS = P23;/片选sbit LT_RESET_N = P24;sbit LT_PKT_FLAG = P25;/LT8900 pkt脚uchar RX_data8;/定义数据缓冲区,保存LT8900收到的数据/*从8900读一个字节*/uchar SPI_read8bit()uchar i,data;for(i=0;i<

2、;8;i+)data=data<<1;SPI_CLK=1;_NOP(); /空指令,稍微延时一下_NOP();_NOP();SPI_CLK=0;if(SPI_MISO=1)data=data|0x01;if(SPI_MISO=0)data=data|0x00;return data;/*往8900写一个字节*/void SPI_write8bit(uchar data)uchar i;for(i=0;i<8;i+)data=data<<1;SPI_CLK=1;_NOP();_NOP();_NOP();SPI_MOSI=C;SPI_CLK=0;/*从地址addr读数

3、据,LT8900寄存器是16位的,*hdata用来保存高8位,ldata用来保存低8位*/void LT8900_writeReg(uchar add,uchar hdata,uchar ldata)SPI_SS=0;/拉低LT8900使能脚,使能LT8900_NOP();SPI_write8bit(add&0X7F);/地址最高位0表示写_NOP();_NOP();SPI_write8bit(hdata);SPI_write8bit(ldata);_NOP();SPI_SS=1;/完毕重新拉高LT8900使能脚void LT8900_readReg(uchar add)SPI_SS=

4、0; /拉低LT8900使能脚,使能LT8900_NOP();SPI_write8bit(add|0x80);/地址最高位1表示读_NOP();_NOP();dataH=SPI_read8bit();/data high bytedataL=SPI_read8bit();/data low byte_NOP();SPI_SS=1; /完毕重新拉高LT8900使能脚/*以上4个函数就是LT8900最底层的4个函数,应用程序可以直接调用。*/void delayms(uchar ms)uchar i,j;for(i=0;i<ms;i+)for(j=0;j<100;j+);/*以下是LT

5、8900接收的初始化代码*/void LT8900_RX_INIT(void)LT_RESET_N=0;/关闭芯片delayms(10);LT_RESET_N=1;/开启芯片,寄存器复位delayms(50);LT8900_writeReg(0, 0x6f, 0xe0);LT8900_writeReg(1, 0x56, 0x81);LT8900_writeReg(2, 0x66, 0x17);LT8900_writeReg(4, 0x9c, 0xc9);LT8900_writeReg(5, 0x66, 0x37);LT8900_writeReg(7, 0x00, 0x4c);LT8900_wr

6、iteReg(8, 0x6C, 0x90);LT8900_writeReg(9, 0x18, 0x40);LT8900_writeReg(10, 0x7F, 0xFD);LT8900_writeReg(11, 0x00, 0x08);LT8900_writeReg(12, 0x00, 0x00);LT8900_writeReg(13, 0x48, 0xBD);LT8900_writeReg(22, 0x00, 0xff);LT8900_writeReg(23, 0x80, 0x05);LT8900_writeReg(24, 0x00, 0x67);LT8900_writeReg(25, 0x1

7、6, 0x59);LT8900_writeReg(26, 0x19, 0xE0);LT8900_writeReg(27, 0x13, 0x00);LT8900_writeReg(28, 0x18, 0x00);LT8900_writeReg(32, 0x48, 0x00);LT8900_writeReg(33, 0x3f, 0xC7);LT8900_writeReg(34, 0x20, 0x00);LT8900_writeReg(35, 0x03, 0x00);LT8900_writeReg(36, 0x05, 0x0A);LT8900_writeReg(39, 0x55, 0xAA);LT8

8、900_writeReg(40, 0x44, 0x01);LT8900_writeReg(41, 0xB0, 0x00);LT8900_writeReg(42, 0xFD, 0xB0);LT8900_writeReg(43, 0x00, 0x0F);LT8900_writeReg(50, 0x00, 0x00);LT8900_writeReg(52, 0x80, 0x80);LT8900_writeReg(7, 0x00, 0X84);delayms(50);/delay 50ms to let LT8900 for operation接收的应用程序可以这样写:Void main(void)i

9、nt i;LT8900_RX_INIT();While(1)if(LT_PKT_FLAG=1) /如果LT8900的PKT脚被拉高,说明收到了数据/* Register 52 的bit813将指示收到多少字节数据,一般来说发端发送多少个字节的数据是确定的,读这个字节用来校验收到的数据包数据长度是否正确*/LT8900_readReg(52);if(dataH&0x3f) = 8)/这里假定发端发的是8个字节的数据包SPI_SS=0;/使能8900/*向LT8900的Register50发送读命令*/SPI_write8bit(50|0x80);_NOP();_NOP();_NOP();

10、_NOP();for(i=0;i<8;i+)RX_datai=SPI_read8bit(); /将8字节数据全部读出_NOP();_NOP();SPI_SS=1;/*以下两步是必须的,1.清空FIFO,2.重新设置频道,LT8900再次进入接收状态*/LT8900_writeReg(52, 0x80, 0x80);LT8900_writeReg(7, 0x00, 0X84);/*接下来就可以根据收到的数据(在数组RX_data中),去干你想干的事情了*/*以下是LT8900发送的初始化代码*/void LT8900_TX_INIT(void)LT_RESET_N=0;/关闭芯片delay

11、ms(10);LT_RESET_N=1;/开启芯片,寄存器复位delayms(50);LT8900_writeReg(0, 0x6f, 0xe0);LT8900_writeReg(1, 0x56, 0x81);LT8900_writeReg(2, 0x66, 0x17);LT8900_writeReg(4, 0x9c, 0xc9);LT8900_writeReg(5, 0x66, 0x37);LT8900_writeReg(7, 0x00, 0x4c);LT8900_writeReg(8, 0x6C, 0x90);LT8900_writeReg(9, 0x18, 0x40);LT8900_wr

12、iteReg(10, 0x7F, 0xFD);LT8900_writeReg(11, 0x00, 0x08);LT8900_writeReg(12, 0x00, 0x00);LT8900_writeReg(13, 0x48, 0xBD);LT8900_writeReg(22, 0x00, 0xff);LT8900_writeReg(23, 0x80, 0x05);LT8900_writeReg(24, 0x00, 0x67);LT8900_writeReg(25, 0x16, 0x59);LT8900_writeReg(26, 0x19, 0xE0);LT8900_writeReg(27, 0

13、x13, 0x00);LT8900_writeReg(28, 0x18, 0x00);LT8900_writeReg(32, 0x48, 0x00);LT8900_writeReg(33, 0x3f, 0xC7);LT8900_writeReg(34, 0x20, 0x00);LT8900_writeReg(35, 0x03, 0x00);LT8900_writeReg(36, 0x05, 0x0A);LT8900_writeReg(39, 0x55, 0xAA);LT8900_writeReg(40, 0x44, 0x01);LT8900_writeReg(41, 0xB0, 0x00);L

14、T8900_writeReg(42, 0xFD, 0xB0);LT8900_writeReg(43, 0x00, 0x0F);LT8900_writeReg(50, 0x00, 0x00);LT8900_writeReg(52, 0x80, 0x80);LT8900_writeReg(7, 0x01, 0x04);delayms(50);/delay 50ms to let LT8900 for operation/*LT8900发送的一个应用程序*/uchar TX_data8;void main(void)int i;LT8900_TX_INIT();While(1)if(/*这里是你要发送的条件,条件成立就进去发送*/)/首先把你要发送的数据填充到数组TX_data,如TX_data0 = 0x07,TX_data1=0x5a,.LT8900_writeReg(7, 0x00, 0X00); /stop tx,停止发送LT8900_writeReg(52,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论