ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:66.78KB ,
资源ID:10634816      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10634816.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VK3366的IIC通信.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VK3366的IIC通信.docx

1、VK3366的IIC通信 VK3366的IIC通信1、vk3366的IIC通信时的模式选择。我们芯片的IIC通信并不是标准的IIC通信模式,而是模拟的iic通信模式,请注意我们的通信时序。 通过MS0和MS1是模式选择位来选择VK3366主串口的接入模式,当MS1引脚接高电平,MS0引脚接低电平时,VK3366芯片主口是IIC模式。2、SDA,SCL引脚 1)SDA是串行数据总线,SCL是串行时钟总线。当总线空闲时,SDA和SCL都通过上拉电阻接到电源正。3、传输协议 当主机与VK3366通信的时候,必须在紧跟地址字节后发送寄存器地址。这个寄存器地址是主机想在一个字节读写或者多字节读写的操作的

2、内部地址字。这个寄存器地址字是8比特字节。与其它设备不同它没有方向位,与普通的数据字节相同,它必须跟一个应答位。一个写寄存器的操作如下图所示。起始位后面紧跟从机地址和一个读写的方向位,一个寄存器地址字节,一系列的数据字节和一个停止位。寄存器地址指示主机想操作的寄存器。紧跟着的数据会被写入指定的寄存器。一个寄存器的读操作与写操作类似。主机发送从机地址和读的方向信号,紧跟寄存器地址,这时VK3366就会发送数据给主机。注意:白的部分是主机到VK3366,灰色的部分是VK3366到主机注意:白的部分是主机到VK3366,灰色的部分是VK3366到主机 从上面的通信格式我们可以看出,在一次通信的过程中

3、包含如下几个部分: A、起始位和停止位 B、应答位 C、器件地址 D、寄存器地址 E、数据段 1)起始位和停止位起始位和停止位的格式 2)应答位 3)器件地址 A1A0VK3366 IIC 地址000x90(1001 000X)010x92(1001 001X)100x94(1001 010X)110x96(1001 011X)注意: X = 0 表示写周期 X = 1 表示读周期注意:器件地址是由A1A0编程实现的。而且最低位是读写控制位。例如当A1A0=11时,向器件写数据时的器件地址为0x96,从器件中读数据时的器件地址为0x97.4)寄存器地址Bit值功能7-保留60读/写寄存器5-4

4、C1:0通道号码3-0A3:0寄存器地址5)一些关键函数/*/Function:主串口读写函数/输入:data1是写vk3366的器件地址,data2是vk3366的寄存器地址,data3是发送的数据/输出: i,读取数据/日期:2012/3/27/* unsigned char send(unsigned char _data1,unsigned char _data2,unsigned char _data3) unsigned char i; clk=1; / start delay(1); sda=0; delay(1); clk=0; delay(1); i=0; if(_data1

5、&0x80) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data1&0x40) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data1&0x20) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data1&0x10) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; del

6、ay(1); if(_data1&0x08) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data1&0x04) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data1&0x02) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data1&0x01) sda=1; else sda=0; delay(1); clk=1; dela

7、y(1); clk=0; delay(1); clk=1; /ack delay(1); clk=0; delay(1); if(_data2&0x80) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data2&0x40) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data2&0x20) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); i

8、f(_data2&0x10) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data2&0x08) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data2&0x04) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data2&0x02) sda=1; else sda=0; delay(1); clk=1; delay(1); cl

9、k=0; delay(1); if(_data2&0x01) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); clk=1; /ack delay(1); clk=0; delay(1); if(!(_data1&0x01) if(_data3&0x80) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data3&0x40) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; d

10、elay(1); if(_data3&0x20) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data3&0x10) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data3&0x08) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data3&0x04) sda=1; else sda=0; delay(1); clk=1; de

11、lay(1); clk=0; delay(1); if(_data3&0x02) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); if(_data3&0x01) sda=1; else sda=0; delay(1); clk=1; delay(1); clk=0; delay(1); clk=1; /ack delay(1); clk=0; delay(1); sda=0;/stop bit delay(1); clk=1; delay(1); sda=1; else clk=1; delay(1); if(sda

12、) i=i+128; clk=0; delay(1); clk=1; delay(1); if(sda) i=i+64; clk=0; delay(1); clk=1; delay(1); if(sda) i=i+32; clk=0; delay(1); clk=1; delay(1); if(sda) i=i+16; clk=0; delay(1); clk=1; delay(1); if(sda) i=i+8; clk=0; delay(1); clk=1; delay(1); if(sda) i=i+4; clk=0; delay(1); clk=1; delay(1); if(sda)

13、 i=i+2; clk=0; delay(1); clk=1; delay(1); if(sda) i=i+1; clk=0; delay(1); sda=0; delay(1); clk=1; /ack delay(1); clk=0; delay(1); sda=0;/stop bit delay(1); clk=1; delay(1); sda=1; return i;/*/*/Function:写寄存器函数/输入:port为子串口的路数,reg为寄存器的地址,dat为写入寄存器的数据/输出: 无/日期:2012/3/27/*void write_reg(unsigned char port,unsigned char reg,unsigned char dat) send(0x96,(port-1)4)+reg),dat); /0x96为器件地址,由A1AO编程和写控制决定/*/Function:读寄存器函数/输入:port为子串口的路数,reg为寄存器的地址/输出: 返回值/日期:2012/3/27/*unsigned char read_reg(unsigned char port,unsigned char reg) return send(0x97,(port-1)4)+reg),0x00);/0x97为器件地址,由A1AO编程和读控制决定

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1