前言:
本文是根据哔哩哔哩网站上“正点原子[第二期]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. 概述
第23.1, 23.2 讲 I2C驱动
1. 硬件原理
根据正点原子I.MX6U APLHA 开发板的电路原理图,I2C1 使用的引脚如下
正点原子 I.MX6ULL 引脚复用:
引脚 | 复用IO | 复用ALT |
I2C1_SCL | UART4_TXD | |
I2C1_SDA | UART4_RXD |
2. I2C IO 复用寄存器
正点原子 I.MX6ULL ALPHA开发板使用 I2C1 时使用 UART4_TX_DATA 作为 I2C1_SCL , UART4_RX_DATA 作为 I2C1_SDA 。
对应的寄存器如下
在I.MX6ULL 参考手册里说明,使用I2C需要将IO引脚配置为开漏模式,并且配置IO引脚的 SION 为打开。
3. I2C 控制寄存器,状态寄存器
产生I2C Start 信号,
I2C作为从机工作模式才需要设置,我们本实验中I.MX6U MCU是作为I2C 主句Master工作的,所以一定不要设置。
需要将I2C 从机的地址写入 I2C_I2DR 寄存器中。