IIC的通信波形分析

本文详细分析了IIC通信协议的起始信号、数据传输、读操作过程,通过逻辑分析仪抓取的cypress PSOC 4000芯片IIC通信波形进行讲解。内容涵盖设备地址、读写操作、应答信号等关键环节,帮助理解IIC协议的工作原理。
摘要由CSDN通过智能技术生成

关于IIC,不解释它的历史了,有兴趣自己去百度看看,本文的图片是由周立功的LAB6021逻辑分析仪抓取的,通信的波形是抓取的cypress的psoc 4000芯片得到的。

最近项目需要用到触摸IC,使用了一片触摸cypress的触摸IC,这个触摸IC的内核挺强大的,主要是可编程,自己配置引脚功能,并通过模拟的分析套件直接在PC端直接显示波形图,通过直观的观察自定义触摸模块的灵敏度,芯片在项目中作为IIC的从设备。芯片的触摸功能我会在另一篇博文说明,本文主要说说怎么查看IIC的波形图。

IIC总线可以接多个设备,协议并不约束设备的主从关系,但是,在同一时间只能有一个主设备,每个设备都有一个设备地址,而cypress的设备可以设置两个设备地址,_(:зゝ∠)_,虽然我不知道要两个设备地址干嘛。

要在1.3寸IIC通信OLED上绘制波形,可以按照以下步骤进行: 1. 初始化OLED屏幕,设置其分辨率和IIC通信地址。 2. 创建一个缓冲区,在其中绘制波形数据。可以选择使用C语言中的数组或指针来存储波形数据。 3. 将缓冲区中的波形数据转换为屏幕像素坐标,并在屏幕上绘制波形。可以使用C语言中的for循环来遍历波形数据,并使用OLED屏幕的API函数来绘制像素。 4. 在需要更新波形时,清空缓冲区并重新绘制波形数据。 以下是一个示例代码,演示了如何在1.3寸IIC通信OLED上绘制正弦波: ```c #include <stdio.h> #include <math.h> #include "oled.h" #define PI 3.1415926 // 初始化OLED屏幕 void oled_init() { // 设置OLED屏幕的分辨率和IIC通信地址 // ... } // 绘制正弦波 void draw_sine_wave() { int n, x, y; float angle, sin_value; int buffer[128]; // 清空缓冲区 for (n = 0; n < 128; n++) { buffer[n] = 0; } // 生成正弦波数据 for (n = 0; n < 128; n++) { angle = (float)n / 128.0 * 2 * PI; sin_value = sin(angle); buffer[n] = (int)(sin_value * 20 + 20); // 将正弦波数据转换为像素坐标 } // 绘制正弦波 for (n = 0; n < 127; n++) { x = n; y = buffer[n]; oled_draw_pixel(x, y, 1); x = n + 1; y = buffer[n + 1]; oled_draw_line(n, buffer[n], x, y, 1); } } int main() { oled_init(); while (1) { draw_sine_wave(); // 等待一段时间后清空屏幕并重新绘制波形 // ... } return 0; } ``` 需要注意的是,以上代码仅为示例,实际应用中还需要根据具体需求进行修改。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值