前言:
本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。
引用:
正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com
《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》
正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档
正文:
本文是 “正点原子[第二期]Linux之ARM(MX6U)裸机篇--第23讲 I2C驱动。本节将参考正点原子的视频教程第23讲和配套的正点原子开发指南文档进行学习。
0. 概述
I2C 是最常用的通信接口,众多的传感器都会提供 I2C 接口来和主控相连,比如陀螺仪、加速度计、触摸屏等等。所以 I2C 是做嵌入式开发必须掌握的, I.MX6U 有 4 个 I2C 接口,可以通过这 4 个 I2C 接口来连接一些 I2C 外设。 I.MX6U-ALPHA 使用 I2C1 接口连接了一个距离传感器 AP3216C,本章我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C,读取AP3216C 的传感器数据。
1. 产生I2C Start 信号,
I2C作为从机工作模式才需要设置,我们本实验中I.MX6U MCU是作为I2C 主句Master工作的,所以一定不要设置。
需要将I2C 从机的地址写入 I2C_I2DR 寄存器中。
2. 产生I2C Stop 信号
6. 需要假读一次I2C_I2DR数据寄存器
In Master Receive mode, reading the data register allows a read to occur and initiates the next byte to be received.