iic通讯 FPGA实现 mpu6050为例
IIC最常用的通讯协议,但普遍用于单片机、arm这些,用FPGA实现大材小用,但对于菜鸡水平练练手很不错,考验串并转换和时序的控制。今天我就以mpu6050陀螺仪为例,实现FPGA的iic通信。
1.首先我们还是研究mpu6050的datasheet 。mpu6050我就不用介绍了,直接看关键信息
1)mpu6050上电延时至少30ms 。
2)iic最大时钟为400khz。slave address为 b110100 x r/w,x位是mpu6050的sd0引脚。第二张是我使用模块的原理图,很明显能看到sd0引脚被拉低,所以模块sd0管脚悬空就行,因此slave address为 b1101000 r/w。
3)iic的 start 与 stop 信号
4)如图,ack为低电平,nack为高电平。
5)读写的时序,注意一下读写差别很大,datasheet给的图很明白,我就不过多解释
6)实现读操作,以设备验证寄存器为例,这个寄存器不用初始化,默认值为0x68。
2.手册看得差不多了,我先实现读操作。
1.)下图是iic读时序仿真,起始位、ack、nack、停止位以及数据。
一定记得要上电延时至少30ms,我之前没发现上电直接读,数据读不出来,后来怀疑上电的问题,仔细看datasheet才发现有上电延时。
2)最后加入uart模块,将读出的数据通过串口发送显示,如图数据完美正确,说明读没问题,说明我们的时序没问题,下一步就对mpu6050进行初始化
ⅠⅠⅡⅢⅣⅤⅥⅦⅠⅡ
3.读时序都写好了,写时序就没问题了,关键我们还是要认真读datasheet,初始化寄存器和读数据寄存器我总结如下,详细说明建议看英文版的datasheet。
1)初始化仿真与上板验证
仿真如图
2)将原始数据经过uart上传,显示数据不停地被读出,初步判定iic操作成功
今天就完成到这儿,后面继续进行原始数据处理,待续。。。。
iic通讯 FPGA实现 mpu6050为例的更多相关文章
- MPU6050首例整合性6轴的姿态模块(转)
源:MPU6050首例整合性6轴的姿态模块 Mpu6050为全球首例整合3轴陀螺仪.3轴加速器.含9轴融合演:MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速 ...
- STM32作为主设备,Arduino作为从设备进行IIC通讯的注意要点
近日公司的项目重心要往米思齐的Arduino图形化编程上转移了,需要我将STM32和Arduino的IIC通讯调通.之前Arduino并没怎么使用过,仅仅是将超声波的代码移植成TOF激光测距而已.网上 ...
- 用Verilog实现IIC通讯
注意,此代码是错误代码,并不能实现想要的结果. 之所以留着,因为里面的enable 是独立开来的思想值得借鉴.就是控制单元和运算单元分开(我也是借鉴别人的实现思想).具体用verilogHDL实现II ...
- LPC1768的iic通讯
LPC1768有三路IIC,其中IIC0支持高速模式和plus模式,另外两路是普通IIC,使用IIC的过程如下 首先依然是打开IIC时钟,同时打开GPIO时钟 然后配置引脚为IIC功能 另外,因为ii ...
- 基于esp32的IIC通讯
本文源码地址在:http://download.csdn.net/download/noticeable/9962029 IIC 通讯应该是当代比较常用的几种通讯方式之一,其无需特殊的IO接口,连线方 ...
- Verilog实现IIC通讯第二版
HMC5883三轴磁力传感器IIC通讯模块的VerilogHDL的实现 上一版并没有实现我想要的功能 0.0.1版 正在修订中 2013/9/2 //date :2013/7/7 //desi ...
- 「STM32 」IIC通讯原理及其实验
I2C两线式串行总线通讯协议,它是由飞利浦开发的,主要用于连接微控制器及其外围设备之间,它是由数据线SDA和信号线SCL构成的,可发送和接收数据即在MUC和I2C设备之间,I2C和I2C之间进行全双工 ...
- 填坑-关于IIC通讯
01.概述 在之前的文章中<STM32IIC详解>中详细讲解了IIC协议,并且使用是NXP的官方手册,demo示例使用IIC读取RTC芯片,运行正常,没有任何问题.并且更新了<II ...
- IIC通讯协议(非原创,转载他人,用于学习)
I2C协议:1.空闲状态 2.开始信号 3.停止信号 4.应答信号 5.数据的有效性 6.数据传输 IIC详解 1.I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL 2.IIC总 ...
随机推荐
- 微信公众号H5用户授权
其实不是很难,总结起来就是: 1.微信公众号管理后台设置redirect_uri. 2.然后发起一个请求去重定向获取code,然后把获取到code之后重定向的URL放在获取code的URL中 3.获取 ...
- poj 3090 && poj 2478(法雷级数,欧拉函数)
http://poj.org/problem?id=3090 法雷级数 法雷级数的递推公式非常easy:f[1] = 2; f[i] = f[i-1]+phi[i]. 该题是法雷级数的变形吧,答案是2 ...
- C#实现马尔科夫模型例子
已知条件:三个缸N状态,每个缸中不同颜色球的个数M状态值,时间轴T,观察值序列O 参数:状态值序列,转移概率序列 求:概率 后台代码如下 , M = ;//N状态,M状态值 (0橙色,1绿色,2蓝色, ...
- LeetCode 172. Factorial Trailing Zeroes (阶乘末尾零的数量)
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...
- session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java推断是否是ajax请求)
在登录过滤器中.推断请求是ajax请求还是超链接或者地址栏变化的请求 if (httpServletReq.getHeader("x-requested-with") != nul ...
- Database returned no natively generated
database returned no natively generated 分类:Hibernatehbm.xml中的配置如下: <id name="logId" typ ...
- Android MaoZhuaWeiBo 好友动态信息列表数据抓取 -3
前面2篇把大致的开发说的几乎相同了,接下来说说粉丝动态消息列表或时间线数据的抓取与解析显示,我将他所有写在了一个 类里.并以封装类对象的形式存储数据.以下看看基本的服务代码: 粉丝动态消息列表数据抓取 ...
- bootstrap table load数据
直接load数据: $("#button").click(function(){ var name=$("input[name='name']").val(); ...
- 让DIV在屏幕上下左右居中
转自:http://blog.sina.com.cn/s/blog_65d41dff0100v0iz.html 其实解决的思路是这样的:首们需要position:absolute;绝对定位.而层的定位 ...
- codeforces round #414 div1+div2
A:判断一下就可以了 #include<bits/stdc++.h> using namespace std; typedef long long ll; int a, b, c, n; ...