草庐IT

IIC_SendByte

全部标签

使用C++编写STM32软件IIC

最近在重构自己的平衡车代码,里面需要用到MPU6050的DMP,从中读取四元数进行欧拉角解算,但是看着软件IIC的代码实在是很变扭,因为之前不会C++,所以如果需要调用多个IIC设备,那么使用的时候就需要重复的去进行软件IIC底层代码的初始化,非常的麻烦,而且需要调整各个引脚,在学习过C++之后,发现类实在是太好用了,那么我就在想能不能通过类把软件IIC的底层进行封装,实现和arduino一样的编程效果,使用的时候只需要放入软件IIC的SCL和SDA对应的GPIO即可。1.环境软件环境:keilCubeMX硬件环境:STM32F103C8T6MPU6050使用引脚:PB8–>SCLPB9–>S

STM32 硬件IIC移植U8g2库

STM32硬件I2C移植U8G2需要准备的东西STM32硬件I2C移植U8G2u8g2配置U8g2源码下载U8g2源码配置STM32CubeMX代码生成生成32工程导入KEIL适配驱动初始化优化Background:U8g2是Arduino上一个广泛使用的屏幕显示库,有着丰富的库函数实现功能,之前做的OLED桌面天气小摆件就是基于U8g2库的,最近在使用STM32想着移植U8g2发现大多数是基于软件I2C的,于是准备使用硬件I2C驱动OLED显示屏0.96寸OLEDSSD1306参考链接:u8g2stm32移植记录视频链接:BilibiliSTM32HAL库硬件IIC移植u8g2库u8g2配置

项目一:IIC读写EEPROM AT24C02

回头想了想在工作中调过的EEPROM还挺多的,有M24M02、M28010 、AT24C02等,今天讲一下AT24C02吧一、AT24C02简介1.1特点文档已经上传了,需要的同学可以自行下载哈,晚点我会把下载链接附上来。我大概照着文档翻译了一下: 存储器内部按组织256字节×8位(2K)组织双线串行接口(IIC)兼容400kHz通信速率具有硬件数据保护的写保护引脚8字节/页写模式允许部分页写入高可靠性:100万次写周期,数据保留:100年1.2引脚定义串行时钟(SCL)、串行数据(SDA)不再赘述。A2,A1和A0引脚用于AT24C02的设备地址输入。WP为写保护引脚,提供硬件数据保护。写保

stm32的IIC驱动0.96OLED

IIC原理介绍:IIC是一个总线的结构但不支持总线协议OLED介绍:一、0.96寸OLED屏幕介绍本文采用的是4针的0.96寸OLED显示进行讲解,采用的是SPI协议,速度会比采用I2C协议的更快,但这两者的显示驱动都一样,本质上没有太大差别。屏幕整体分辨率为128*64,有黄蓝、白、蓝三种颜色可选,驱动芯片为SSD1306二、SSD1306驱动芯片1)图像显示RAM(GDDRAM)GDDRAM是位映射静态RAM,大小为128x64位。GDDRAM分为8页(PAGE0~PAGE7),每页内1个SEG对应1Byte数据,一页由128Byte组成。即屏幕每8行像素点(8PIXEL)记为一页(PAG

STM32硬件IIC卡死问题和DMA发送数据异常问题

STM32硬件IIC卡死问题和DMA发送数据异常问题问题1描述:一直听说STM32的硬件IIC有问题,我平时做项目一直没有遇到过,这次做项目发现硬件IIC居然会自己卡死,现象就是IIC发不出数据,用逻辑分析仪捕捉不到任何电平,必须要重启单片机才能正常,接下来说一下我的硬件环境:STM32作为主机,IIC总线上挂载这AT24C02和一个流量传感器,但是这个流量传感器有问题,他在不上电的时候IIC总线一直输出1.8V(IIC信号线反向给流量传感器供电导致的),这就导致STM32初始话完IIC后就处于卡死状态(STM32检测到IIC线异常后就直接卡死了,不管你程序怎么发送信号电平),所以最终解决办法

0.96OLED 4针IIC STM32-标准库版本(附源码)

0.96OLED4针IICSTM32标准库版本在前面已经介绍过,这里就不多说了,详情请见:0.96OLED4针IICSTM32HAL库版本另外,本人在代码中封装了一个OLED显示的接口,方便开发者对字符显示位置的快速定位,以及像C语言printf()函数一样在屏幕上进行int,float,char等变量的格式化输出。非常方便实用。封装接口原先用这个oled库提供的接口使用x,y定位坐标计算比较麻烦,因此做了一个宏进行封装。可变参数宏:chartxt[16]; //需要在调用这个显示接口前声明txt这个变量#definedisplay(row,col,size,...){sprintf((cha

总线驱动---IIC驱动

总线驱动—IIC驱动文章目录总线驱动---IIC驱动LinuxI2C体系结构IIC-core(协议层)IIC总线驱动IIC设备驱动I.MX6U的I2C适配器驱动分析I2C设备驱动编写流程1、未使用设备树的时候2、使用设备树的时候I2C设备数据收发处理流程ap3216c实例1、IO修改或添加2、在i2c1节点追加ap3216c子节点3.驱动LinuxI2C体系结构Linux的I2C体系结构分为3个组成部分。(1)I2C核心I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(即Algorithm)上层的与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等,如图15.1

SGM58031的IIC接口调试过程

圣邦微电子推出的SGM58031是具有16位分辨率的精密模数转换器(ADC),设计具有高精度、低功耗和易于实现的特点,具有片内基准电压源和振荡器,数据通过兼容I2C的串行接口进行传输。先来看看SGM58031的IIC接口时序图: 话不多说,直奔主题:调试主要分为两个模块:    一个是控制驱动模块进行读写操作,下文中我们简称为控制模块。一个是IIC时序的驱动模块,通过读写操作写入从机地址,读写命令,配置寄存器地址,配置寄存器值,读取寄存器值,下文中我们简称为驱动模块。    驱动模块是进行读写操作的驱动单元。首先来说写寄存器过程:    在写操作过程中,当写使能信号出现后,模块开始工作,写入高

STM32初学入门笔记(5):使用STM32CubeMX通过SPI,IIC驱动OLED屏幕

随着时代的进步,OLED显示屏成为了继LCD显示屏之后的新一代显示屏技术,OLED具有可视角高,功耗低,厚度薄,耐冲击、振动能力强,像素响应时间低等优点,在嵌入式开发中,OLED显示器也是一个主要的部分,制作OLED显示模块的驱动也是学习STM32路上的重要一部分,本篇将从零开始,一步一步教你编写属于自己的OLED驱动,全部源码放在交流群,有需要的可以入群拿,喜欢的不要忘了点赞以及关注博主哦交流Q_qun:659512171目录一,基础知识:二,STM32CubeMX配置:1,新建工程:2,配置工程:(1)配置RCC时钟:(3)配置调试:(4)配置IIC/SPI:        SPI:   

FPGA:三大协议(IIC、UART、SPI)之IIC

摘要:1、本文讲述IIC的物理层面的结构(使用iic工作的物理层面的连接);2、本文讲解协议层面的通信交流格式(IIC时序);3、提供一个主机和从机的一个verilog代码;4、本文的主从机指的是:板子一号作为主机,发送数据给作为从机的板子二号;注意:在实际应用中,一般器件作为从机,我们写的程序作为主机通过数据线控制器件进行工作。一、IIC物理结构  二、IIC时序1、前言:当两个器件要通过IIC协议来交流,已经在物理层面做好了准备,连接好了SDA和SCL两根线,也就是建立了一个交流通道。(比如已经拨通了电话,接下来就开始讲话了)。2、常态:当建立好了联系,有了一个沟通的通道之后(就像拨通了电