Z8再来一次!F0830 和 Z8 再来一次!F083A 微控制器没有支持 I2C 的硬件外设,但该协议很容易在软件中实现。

图 1 Z8 再来一次!具有从属功能
PC0 和 PC1 引脚配置为开漏,因此它们不提供任何电流源。所有源电流都由外部上拉提供,这允许从设备将 SCL 保持为低以进行时钟延长。不需要将端口从输入配置切换到输出配置,因为端口输入寄存器 PxIN 始终返回输入引脚的状态。一旦主机释放引脚高电平,从机可以将引脚拉低或保持高电平,而主机不必将引脚从输出切换到输入。
测试 I2C 主/从:所需设备
测试所需的设备包括:
Z8再来一次!F083A 28 引脚开发套件
4.7K 电阻
Slave 是通过对 Slave 执行写入来测量的,同时使用示波器监视 SCL 线并测量总写入时间。写入的总时间为 150 µs,9 位/150 µs = 60 kbps。
主机通过对连接到 I2C 总线的外部 400 kHz EEPROM 执行串行读取来测量。执行串行读取所需的时间是使用示波器来测量的,以监测 SCL 线上的活动。使用 Clock () 中的最小延迟,20 个字节的完整串行读取时间为 923 µs。接收的字节数为 23 x 9 位,总共传输 180 位,即 180 位/92 µs = 194 kbps。

图 2 I2C 主/从的测试设置
Slave 软件源自Using the Z8 Encore!和 Z8 再来一次!XP MCU 作为 I2C 从设备应用笔记。作为 Z8 安可!F083A 运行在 20 MHz,可以使用内部振荡器,不需要将 Slave 的时钟源切换到外部谐振器。此外,Slave 的地址也发生了变化。Slave 地址位于 DEVICE_ADDRESS 定义的头文件 scl_interrupt_XP.h 中。必须更改地址,使其与 EEPROM 的地址不同。唯一的其他修改是包含一个 IF 语句以在接收到数据包时切换 LED D3。这是在 scl_interrupt_XP.c 文件的主循环中完成的。如果接收到数据包,从设备开发板上的 LED D3 将切换状态为 ON 或 OFF。
当按下 SW2 时,主机软件向从机发送一个数据包。如果 Slave 收到数据包,Slave 会切换 Slave 开发板上 LED D3 的状态。如果没有收到数据包,主机将点亮其 LED D3。
上电时,主机将 SDA 和 SCL 引脚配置为开漏输出。也就是说,Master 不会将 SDA 和 SCL 拉高,而是通过上拉电阻将它们拉高。这允许从设备将 SDA 和 SCL 拉低。也就是说,主机不需要重新配置从输出到输入的 I/O 引脚,以稍微提高代码大小速度。LED 引脚也启用并配置为 13 mA 驱动。
本应用说明介绍了一种在 Z8 Encore 上实现主/从功能的方法!MCU 使用 GPIO 引脚模拟 SCL 和 SDA 线。该软件支持 I2C 总线上的事务,从设备的数据传输速率高达 60 kbps,主设备的数据传输速率高达 194 kbps。
编辑:hfy
-
微控制器
+关注
关注
48文章
8249浏览量
162378 -
mcu
+关注
关注
147文章
18605浏览量
387046 -
寄存器
+关注
关注
31文章
5589浏览量
129063 -
I2C
+关注
关注
28文章
1547浏览量
130488
发布评论请先 登录
一种基于FPGA的UART实现方法设计
基于Z8 Encore F0830系列微控制器
一种在片上系统中实现Nand Flash控制器的方法
霸菱科技智能防盗门锁Z8简介
基于 XP® 的 SLA 电池充电器

一种在 Z8 Encore 上实现主/从功能的方法!
评论