I2C教程——疯壳·开发板系列Wolverine-Team2015/7/16疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402目录第一节MPU硬件电路.
3第二节I2C.
42.
1I2C介绍.
42.
2寄存器介绍.
42.
2.
1I2C控制寄存器.
42.
2.
2I2C目标地址寄存器.
52.
2.
3I2C接收发送数据缓存与命令寄存器.
52.
2.
4I2C清除TX_ABRT中断.
62.
2.
5I2C使能寄存器.
62.
2.
6I2C状态寄存器.
72.
2.
7I2C接收FIFO数目寄存器.
82.
2.
8I2C发送异常终止源寄存器.
82.
3寄存器配置讲解.
9第三节I2C实验.
11疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402官网地址:http://www.
fengke.
club购买链接:http://shop115904315.
taobao.
com/官方QQ群:193836402疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402第一节MPU硬件电路MPU6050为I2C接口,分别接在MCU的P12与P13引脚,中断引脚接在P24引脚,如下图所示:疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402第二节I2C2.
1I2C介绍I2C总线是一个为系统中电路通信提供支持的可编程控制总线,它是一个软件定义的两线通信协议.
两线I2C串行接口包括一个串行数据线(SDA)和一个串行时钟线(SCL);支持两种通信速率,标准模式(0~100Kb/s)和快速模式(小于等于400Kb/s);时钟同步;32字节的发送接收FIFO;主机发送与接收操作;7或10位地址,7或10为混合格式发送;块发送模式;默认从地址为0x055;中断或者轮询操作模式;可编程的数据线保持时间;2.
2寄存器介绍I2C相关的寄存器比较多,所以我们只介绍常用的寄存器,其它的可以参考官方数据手册AD14580_DS_v3.
1.
pdf,位于目录:.
.
\WT开发板\硬件资料.
2.
2.
1I2C控制寄存器15:7位:保留不使用;6位:I2C从设备使能位,'0'表示从设备使能,'1'表示从设备不可用,该位不一定要软件设置,但是要保证如果该位为'0'则该寄存器的第0位也为'0';5位:当作为主设备时,是否发送重启条件,'0'表示不可以,'1'表示可以;疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:1938364024位:作为主设备时,决定以7位地址还是10位地址开始发送,'0'表示7位地址,'1'表示10位地址;3位:作为从设备时,决定以7位地址还是10位地址开始发送,'0'表示7位地址,'1'表示10位地址;2:1位:I2C通信速度选择,1表示标准速度(100Kbit/s),2表示快速(400Kbit/s);0位:I2C主设备使能,'0'表示主设备不可用,'1'表示主设备使能,要保证如果该位为'1'则该寄存器的第6位也为'1';2.
2.
2I2C目标地址寄存器15:12位:保留不使用;11位:该位决定软件是否进行广播或者开始字节命令,'0'表示忽略第10位GC_OR_START并且正常使用IC_TAR;10位:如果第11位设置为'1',则该位表示控制器是否进行广播或开始字节命令,'0'表示发送广播地址,之后只能进行写操作,如果进行读操作则导致TX_ABRT置位,控制器一直停留在广播模式,直到第11位被清除,'1'表示发送开始字节;9:0位:这是主设备发送的目标地址,如果发送广播则该位被忽略,CPU只需要写一次这些位;注意如果目标地址与从设备地址相同则存在回路,但是FIFO为主从共用,所以完全回路是可行的,只支持单方向的回路,一个主设备不能给自己发送数据只能发送给从设备.
2.
2.
3I2C接收发送数据缓存与命令寄存器疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:19383640215:9位:保留不使用;8位:读写控制位,作为从设备时不能控制方向,只能作为主设备时使用,'0'表示写,'1'表示读;7:0位:存储I2C总线上发送或接收的数据,如果你正在操作该寄存器并且要进行读操作则该位被忽略,如果你读该寄存器则该位存储的是接收到的数据.
2.
2.
4I2C清除TX_ABRT中断15:1位:保留不使用;0位:清除发送异常停止位,读该位则清除发送异常停止中断位,和发送异常停止源寄存器位.
同时发送FIFO从刷新/复位状态中释放出来,可以允许更多写入.
2.
2.
5I2C使能寄存器疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:19383640215:1位:保留不使用;0位:控制器使能位;2.
2.
6I2C状态寄存器15:7位:保留不使用;6位:判断从设备是否活动;5位:判断主设备是否活动;4位:判断接收FIFO是否全满;3位:判断接收FIFO是否为空;疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:1938364022位:判断发送FIFO是否全满;1位:判断发送FIFO是否为空;0位:判断I2C模块是否活动.
2.
2.
7I2C接收FIFO数目寄存器15:6位:保留不使用;5:0位:接收FIFO可以接收多少字节.
2.
2.
8I2C发送异常终止源寄存器疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:19383640215位:当主设备需要发送数据时,却进入读数据状态;14位:当发送数据时,从设备丢失总线;13位:当从设备要接收数据时,FIFO中已经有一些数据;12位:失去仲裁;11位:当主设备不可用时,用户进行主设备的操作;10位:重启不可用,并且主设备在10位地址模式下发送读命令;9位:重启不可用,但是用户发送一个开始字节;8位:重启不可用,但是用户试图在高速模式下发送数据;7位:主设备已经发送了一个开始字节,并且开始字节被确认;6位:主设备在高速模式下,并且被确认;5位:主设备控制器广播之后进行读操作;4位:主设备发送广播,但是没有从设备确认;3位:只有主设备有效,主设备已经发送地址,并确认,但是发送数据得不到确认信号;2位:主设备使用10位地址模式,10位地址的第二个字节没有被任何从设备确认;1位:主设备使用10位地址模式,10位地址的第一个字节没有被任何从设备确认;0位:主设备使用7位地址模式,但是没有被任何从设备确认.
2.
3寄存器配置讲解#defineCLK_PER_REG(*(volatileuint16*)0x50000004)疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402#defineI2C_CON_REG(*(volatileuint16*)0x50001300)#defineI2C_TAR_REG(*(volatileuint16*)0x50001304)#defineI2C_DATA_CMD_REG(*(volatileuint16*)0x50001310)#defineI2C_CLR_TX_ABRT_REG(*(volatileuint16*)0x50001354)#defineI2C_ENABLE_REG(*(volatileuint16*)0x5000136C)#defineI2C_STATUS_REG(*(volatileuint16*)0x50001370)#defineI2C_RXFLR_REG(*(volatileuint16*)0x50001378)#defineI2C_TX_ABRT_SOURCE_REG(*(volatileuint16*)0x50001380)启动I2C模块的时钟:CLK_PER_REG|=0x0020;I2C的初始化寄存器配置:先关闭I2C控制器,I2C_ENABLE_REG=0x00;设置为主模式,关闭从模式,可以重复开始,速度设置为快速,地址为7位模式(0x0000000001100101),I2C_CON_REG=0x0065;设置目标设备地址为0x51,I2C_TAR_REG=0x51;打开I2C控制器,I2C_ENABLE_REG=0x01;等待控制器准备好,while((I2C_STATUS_REG&0x20)!
=0);读取地址为0x98处的一个字节,先发送地址I2C_DATA_CMD_REG=0x98;等待发送完毕while((I2C_STATUS_REG&0x0002)==0);发送读指令I2C_DATA_CMD_REG=0x0100;等待发送完毕while((I2C_STATUS_REG&0x0004)==0);之后等待数据接收完毕while(I2C_RXFLR_REG==0);读取接收缓冲区的数据即为接收数据rx_data=I2C_DATA_CMD_REG;向地址为0x98处写入一个字节0xaa,先发送地址I2C_DATA_CMD_REG=0x98;等待发送完毕while((I2C_STATUS_REG&0x0002)==0);发送数据I2C_DATA_CMD_REG=0xaa;等待发送完毕while((I2C_STATUS_REG&0x0004)==0);疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402第三节I2C实验实验需要使用的模块有:手环,Jlink调试工具,USB转串模块,一根手环下载调试线.
将JLINK通过下载调试线连接到手环的USB调试接口,JLINK插在有拨码开关的一端,注意丝印标注一一对应,将JLINK插上电脑的USB口.
将USB转串模块插在手环现在调试线的另一端,注意丝印标注一一对应,然后将USB转串模块插在电脑的USB接口.
如下图所示:打开I2C实验的Keil工程Simple_I2C.
uvproj,位于目录:.
.
\Moobandv1.
3\4_实战教程\1_裸机篇\5_I2C实验\I2C实验,如下图所示:疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402打开串口调试助手,连接串口模块.
在KEIL中编译源代码,点击DEBUG,然后点击全速运行,就可以看到串口调试助手打印出的信息,如下图所示:疯壳·开发板系列版权所有,盗版必究官网地址:http://www.
fengke.
club淘宝店:http://shop115904315.
taobao.
com官方QQ群:193836402
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑提速啦的市场定位提速啦主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。提速啦的售后保证提速啦退款 通过于合作商的友好协商,云服务器提供3天内全额退款,超过3天不退款 物理机部分支持当天全额退款提速啦提现 充...
GreencloudVPS此次在四个机房都上线10Gbps大带宽VPS,并且全部采用AMD处理器,其中美国芝加哥机房采用Ryzen 3950x处理器,新加坡、荷兰阿姆斯特丹、美国杰克逊维尔机房采用Ryzen 3960x处理器,全部都是RAID-1 NVMe硬盘、DDR4 2666Mhz内存,GreenCloudVPS本次促销的便宜VPS最低仅需20美元/年,支持支付宝、银联和paypal。Gree...
OneTechCloud发布了本月促销信息,全场VPS主机月付9折,季付8折,优惠后香港VPS月付25.2元起,美国CN2 GIA线路高防VPS月付31.5元起。这是一家2019年成立的国人主机商,提供VPS主机和独立服务器租用,产品数据中心包括美国洛杉矶和中国香港,Cera的机器,VPS基于KVM架构,采用SSD硬盘,其中美国洛杉矶回程CN2 GIA,可选高防。下面列出部分套餐配置信息。美国CN...
qq同步助手怎么用为你推荐
考生itunes设备ipad奶粉ios8您的iphonecolumnios5fusioncharts如何自定义FusionCharts图表上的工具提示?canvas2七尾奈留除了DC canvas2 sola EF 快乐小兔幸运草 以外改编成动画的作品有哪些?micromediawww.macromedia.com 是什么网站css3按钮html点击按钮怎么弹出一个浮动的窗体css选择器CSS中选择器包括 A,超文本标记选择器 B,类选择器 C,标签选择器 D,ID选择器
域名批量查询 免费域名注册网站 北京域名注册 中文域名申请 主机屋 lnmp 瓦工 mach5 香港主机 免费cdn加速 表格样式 火车票抢票攻略 debian7 php免费空间 免费ftp站点 panel1 ca4249 毫秒英文 免费mysql 200g硬盘 更多