[AG32VF407]国产MCU+FPGA 使用I2C测试陀螺仪MPU6050

视频讲解

[AG32VF407]国产MCU+FPGA 使用I2C测试陀螺仪MPU6050

实验过程

查看原理图中定义的I2C的管脚,PB0和PB1在这里插入图片描述
在board.ve中定义的引脚功能

I2C0_SDA PIN_36
I2C0_SCL PIN_35

新建工程在这里插入图片描述
测试代码

#include "board.h"#define MIN_IRQ_PRIORITY 1
#define MAX_IRQ_PRIORITY PLIC_MAX_PRIORITY
#define I2C_PRIORITY    (MIN_IRQ_PRIORITY + 1)void I2cISR()
{I2C_ClearInt(I2C0);
}int main(void)
{board_init();plic_isr[I2C0_IRQn] = I2cISR;PERIPHERAL_ENABLE(I2C, 0);INT_EnableIRQ(I2C0_IRQn, I2C_PRIORITY);uint32_t frequency = 400e3;I2C_Init(I2C0, frequency);uint32_t pclk_freq = SYS_GetPclkFreq();uint16_t prescaler = I2C_GetPrescaler(I2C0);printf("I2C frequency: %d, prescaler: %d, apb clk frequency: %d\n", frequency, prescaler, pclk_freq);if (fabs((prescaler + 1) * 5.0 * frequency / pclk_freq - 1) > 0.01) {printf("I2C prescaler read mismatch, 0x%02x%02x, %d, %d\n", I2C0->PRERHI, I2C0->PRERLO, frequency, pclk_freq);return false;}I2C_Enable(I2C0);#define LSM6DSR_IIC_ADDR 0x68#define LSM6DSR_WHO_AM_I 0x75I2C_StartSend(I2C0, LSM6DSR_IIC_ADDR);I2C_SendData(I2C0, LSM6DSR_WHO_AM_I);I2C_StartReceive(I2C0, LSM6DSR_IIC_ADDR);I2C_WaitForTransfer(I2C0);uint8_t data;data = I2C_StopReceiveWait(I2C0);// data = I2C_ReceiveDataWait(I2C0);printf("who am i is %x", data);return 0;
}

串口调试终端输出,who am i 寄存器数据符合预期在这里插入图片描述
通过逻辑分析仪抓取的I2C波形在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一行命令在 wsl-ubuntu 中使用 Docker 启动 Windows

在 wsl-ubuntu 中使用 Docker 启动 Windows 0. 背景1. 验证我的系统是否支持 KVM?2. 使用 Docker 启动 Windows3. 访问 Docker 启动的 Windows4. Docker Hub 地址5. Github 地址 0. 背景 我们可以在 Windows 系统使用安装 wsl-ubuntu,今天玩玩在 wsl-ub…

Ubuntu系统中部署C++环境与Visual Studio Code软件

本文介绍在Linux Ubuntu操作系统下,配置Visual Studio Code软件与C++代码开发环境的方法。 在文章VMware虚拟机部署Linux Ubuntu系统的方法中,我们介绍了Linux Ubuntu操作系统的下载、安装方法;本文则基于前述基础,继续介绍在Linux Ubuntu操作系统中配置Visual Studio Code…

【深度学习:t-SNE 】T 分布随机邻域嵌入

【深度学习:t-SNE 】T 分布随机邻域嵌入 降低数据维度的目标什么是PCA和t-SNE,两者有什么区别或相似之处?主成分分析(PCA)t-分布式随机邻域嵌入(t-SNE) 在 MNIST 数据集上实现 PCA 和 t-SNE结论…

企业培训革新:在线教育系统源码的全面解析

如今,在线教育系统的兴起为企业提供了全新的解决方案,使得培训不再受到时间和地域的限制。 一、在线教育系统的关键组成 在线教育系统的源码包含众多关键组成部分,其中包括: 1.1用户管理模块 用户管理模块负责管理学员和教员的…

单片机学习笔记---独立按键控制LED亮灭

直接进入正题! 今天开始我们要学习一个新的模块:独立按键! 先说独立按键的内部结构: 它相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实…

Leetcode—114. 二叉树展开为链表【中等】

2023每日刷题(九十八) Leetcode—114. 二叉树展开为链表 Morris-like算法思想 可以发现展开的顺序其实就是二叉树的先序遍历。算法和 94 题中序遍历的 Morris 算法有些神似,我们需要两步完成这道题。 将左子树插入到右子树的地方将原来的右…

JVM系列-7内存调优

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理🔥如果感觉博主的文…

鸿蒙开发初体验

文章目录 前言一、环境配置1.1 安装DevEco Studio1.2 安装相关环境 二、工程创建三、工程结构介绍四、代码实现4.1 初识ArkTs4.2 具体实现 参考资料 前言 HarmonyOS是华为公司推出的一种操作系统,旨在为不同设备提供统一的操作系统和开发平台。鸿蒙开发的出现为用户…

CSS优先级内容

定义CSS样式时,经常出现两个或多个样式规则应用在同一元素的情况,这时就会出现优先级的情况,那么应用的元素应该显示哪一个样式呢? 一.下面举例对优先级进行具体讲解。 p{color:red;} .blue{color:orange;} #header{color:blu…

【Vue】1-2、Webpack 中的插件

一、Webpack 插件的作用 通过安装和配置第三方的插件,可以拓展 webpack 的能力,从而让 webpack 用起来更方便。 二、两个常用插件 1)webpack-dev-server 类似于 node.js 使用的 nodemon 工具 每当修改了源代码,webpack 会自动…

市场复盘总结 20240126

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 昨日主题投资 连板进级率 27/105 25.7% 二进三: 进级率低 50% 最常用的二种方法: 方…

QT + opengl 环境搭建(glfw, glad),创建一个简单窗口

一.下载glfw,glad并编译 1.glfw个人理解就是对底层opengl的一些基本接口的封装,提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入。glfw的下载地址:Download | GLFW,下载完成后…