DE10-Lite加速度计使用教程
DE10-Lite加速度计使用教程
1. 概述
DE10-Lite实验板上有一片5轴加速度计芯片ADXL345(通常称为G-sensor)。它可以用来测量板子的倾斜角度。本文讲述如何以50次/秒的速度读取其X轴和Y轴的数据。
在使用SystemBuilder建立工程时,勾选Accelerometer项。
这个接口有一点复杂,下面的*.zip文件里提供了代码和说明文件。
把以下文件复制到你的工程的hdl/子目录:
hdl/accel.v
hdl/spi_control.v
hdl/spi_serdes.v
压缩包里的test/子目录下是测试文件,可以借鉴。
2.模块说明
下面讲述如何使用spi_control模块。
- spi_control.v
这是一个用来控制主从(FPGA和加速度计)通信的模块。这个模块初始化DE10-Lite上的加速度计并周期性的采样其X轴和Y轴的数据。使用这个模块之前,请仔细阅读下面的参数和端口汇总信息。注意模块的3个时钟信号的特殊要求。生成这3个时钟信号的详细描述见文尾。
参数
n SPI_CLK_FREQ—用于SPI从端通信的时钟频率。这个时钟频率也是spi_control和spi_serdes里的大部分逻辑使用的时钟信号。这个只在2MHz验证过,所以,除非必要,不要修改这个值。
n UPDATE_FREQ—从G-sensor采样的频率,这个只在50Hz验证过,非必要,勿修改。
端口
n reset_n 为0时,复位位。
n clk 模块的时钟信号。在模块例化中,确保data_update保持一个时钟周期的高电平。这个信号经过25MHz和50MHz测试。
n spi_clk 驱动SPI的内部逻辑时钟信号。注意:这个信号必须与clk同相,否则,时序约束条件可能就不满足。
n spi_clk_out 驱动SPI外部逻辑的时钟信号。注意:其频率必须与spi_clk相同,但相位偏前270度。
n data_update 控制信号。当获取有效的data_x和data_y的新值时,保持一个时钟周期的高电平。
n data_x G_sensor的X轴的数值(当七段数码管正对着你时,左右翻转实验板),有符号的16位2的补码。只有当data_update==1时,它才有效。
n data_y G_sensor的Y轴的数值(当七段数码管正对着你时,前后翻转实验板),有符号的16位2的补码。只有当data_update==1时,它才有效。
n SPI_CSN SPI协议的片选信号。直接连接到顶层模块中同名端口。
n SPI_CLK SPI协议的时钟信号。直接连接到顶层模块中同名端口。
n SPI_SDI SPI主到从的数据线。直接连接到顶层模块中同名端口。
n SPI_SDO SPI从到主的数据线。直接连接到顶层模块中同名端口。
2.spi_serdec.v
这个模块包含一个串并转换器,用于FPGA和加速度计之间的4线模式的SPI通信。在设计中使用spi_control.v模块会例化这个模块。这个模块主要用来主从交互,不支持突发访问。
3.用锁相环配置时钟
前面提到的三个时钟信号:clk,spi_clk,spi_clk_out可以用一个PLL模块生成。参考之前的PLL例化教程。
在参数设置时,c0,c1,c2的值如下:
* c0 - Freq: 25
MHz, Phase: 0
* c1 - Freq: 2
MHz, Phase: 0
* c2 - Freq: 2
MHz, Phase 270
你设计的模块时钟信号是c0。
把这些时钟信号连接到spi_control模块的输入端口:
* c0 → clk
* c1 → spi_clk
* c2 →
spi_clk_out
4.输出的范围
虽然加速度计的输出是16位的2的补码,大概在[-260,+260],但观测在[-500,+500].
5.输出的时序
实际上,新的加速度计的值随时都会产生,但是需要跟主时钟同步(25MHz或50MHz)。因此,在某些时候需要新的加速度计输出值的应用程序将需要缓冲加速度计的输出。最简单的缓冲器是一个16位寄存器,当加速计的输出有效时写入,并且可以在任何时候读取。
References:
1. EEC180 Tutorial: Using the accelerometer on the DE10-LITE board
https://www.ece.ucdavis.edu/~bbaas/180/tutorials/accelerometer.html
Written by YongfengXie
2022/05/31 Written
DE10-Lite加速度计使用教程的更多相关文章
- 刻录DVD.XP系统盘(U盘)
ZC:用这个软件,安装太慢了... 忽然发现 以前有别的软件可以使用:http://www.cnblogs.com/vmskill/p/6196522.html 1.我是在这个论坛看到 这个工具的:h ...
- 免费申请使用IBM Cloud Lite(轻量套餐) 详细教程指南
注册轻量帐户可在 IBM CLOUD控制台中使用所选的显示有轻量标记的免费轻量套餐来构建应用程序和探索服务.轻量帐户不会到期,也无需信用卡. 本文详细的介绍了一下,免费云服务的申请以及使用!这次使用I ...
- Jetty使用教程(一)——开始使用Jetty
一.Jetty简介 1.1 什么是Jetty Jetty是一个提供HHTP服务器.HTTP客户端和javax.servlet容器的开源项目. 这个入门教程分为五个部分: 第一部分部分重点介绍如何使 ...
- 【特别推荐】Web 开发人员必备的经典 HTML5 教程
对于我来说,Web 前端开发是最酷的职业之一,因为你可以用新的技术发挥,创造出一些惊人的东西.唯一的问题是,你需要跟上这个领域的发展脚步,因此,你必须不断的学习,不断的前进.本文将分享能够帮助您快速掌 ...
- [分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 )
[分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 ) billcheung 发表于 2011-10-23 00:07:49 https://www.itsk.com ...
- [原创] RT7 Lite win7旗舰版精简方案
[原创] RT7 Lite win7旗舰版精简方案 墨雪SEED 发表于 2016-1-26 21:23:54 https://www.itsk.com/thread-362912-1-5.html ...
- 基于Nodejs生态圈的TypeScript+React开发入门教程
基于Nodejs生态圈的TypeScript+React开发入门教程 概述 本教程旨在为基于Nodejs npm生态圈的前端程序开发提供入门讲解. Nodejs是什么 Nodejs是一个高性能Ja ...
- Arduino可穿戴开发入门教程(大学霸内部资料)
Arduino可穿戴开发入门教程(大学霸内部资料) 试读下载地址:链接:http://pan.baidu.com/s/1mg9To28 密码:z5v8 介绍:Arduino可穿戴开发入门教程(大学霸内 ...
- Cocos2d-JS加速度计与加速度事件
在很多移动设备的游戏使用到了加速度计,Cocos2d-JS引擎提供了访问加速度计传感器的能力.本节我们首先介绍一下加速度计传感器,然后再介绍如何在Cocos2d-JS中访问加速度计.加速度计加速度计是 ...
- QML官方系列教程——QML Applications
附网址:http://qt-project.org/doc/qt-5/qmlapplications.html 假设你对Qt的官方demo感兴趣,能够參考本博客的另一个系列Qt5官方demo解析集 每 ...
随机推荐
- 容器镜像加速指南:探索 Kubernetes 缓存最佳实践
介绍 将容器化应用程序部署到 Kubernetes 集群时,由于从 registry 中提取必要的容器镜像需要时间,因此可能会出现延迟.在应用程序需要横向扩展或处理高速实时数据的情况下,这种延迟尤其容 ...
- 慢查询SQL排查
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c56bd0c5.html 你好,我是测试蔡坨坨. 在往期文章中,我们聊过数据库基础知识,可参考「数据库基础,看完这篇就够了! ...
- HTTP与WebSocket/WebDAV
WebSocket WebDAV
- OpenHarmony有氧拳击之设备端开发
一.简介 在一个风和日丽,阳光明媚的下午,码农们都像往常一样正在专注地码代码.突然前面的小哥哥站起来,手握开发板,来回出拳.这是怎么回事? 原来这是一款拳击互动游戏,本文将带你一同解开其中的奥秘.开发 ...
- CircleIndicator组件,使指示器风格更加多样化
UI界面是应用程序可视化必不可少的部分.设计精致的UI界面可以使得整个可视化应用程序给用户留下深刻的印象,是改善用户界面体验最直接的方式. ArkUI开发框架为开发者提供了丰富的UI原生组件,如Nav ...
- 技术文档指南:版本说明、网站文案、FAQ、案例研究与内容优化
Release Notes 和产品公告 Release Notes 通常是软件文档的一部分,是在新产品发布时提供给用户的简短.高级摘要.它们包含有关更新的重要信息,包括新功能.增强功能.错误修复,通常 ...
- QImage 与 Mat 互转
QImage 转 Mat Mat QImage2Mat(QImage &img) { cv::Mat mat; switch (img.format()) { case QImage::For ...
- js推送网页到扩展屏上--谷歌浏览器
平时我们推送网页.打开窗口都是用的 window.open,但是谷歌却不支持这种方法,也不是不支持,是可以打开窗口,但是无法将窗口移动到扩展屏上. 后面经过百度,发现了一个支持谷歌推送网页到扩展屏的方 ...
- 全新适配鸿蒙生态,Cocos引擎助力3D应用开发
原文链接:https://mp.weixin.qq.com/s/rCACesJ4QxRuU2NRjIvbDQ,点击链接查看更多技术内容: 一.适配HarmonyOS背景 HarmonyOS 3.1版本 ...
- 【直播回顾】Hello HarmonyOS进阶课程第五课——原子化服务
由HDE李洋老师主讲的Hello HarmonyOS进阶系列应用篇第五课<原子化服务>, 已于6月1日晚上 19 点在HarmonyOS社群内成功举行.本节课李洋老师带领大家了解Harmo ...