草庐IT

IIC_wr_eeprom

全部标签

使用C++编写STM32软件IIC

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

stm32使用i2c读写eeprom的HAL库实现

stm32使用i2c读写eeprom的HAL库实现快速查看stm32使用i2c读写eeprom的HAL库实现实验目的缘起搭建工程实验现象本文中使用的测试工程附录本文目标:基于HAL库的stm32实现eeprom的i2c实验按照本文的描述,应该可以跑通实验并举一反三。先决条件:装有编译和集成的开发环境,比如:KeiluVision5、STM32CubeMX使用外设:I2C1、USART1、GPIOEEPROM(也称为E2PROM)代表电可擦除可编程只读存储器,是计算机中使用的一种非易失性存储器,通常集成在智能卡和远程无钥匙系统等微控制器中,或作为一个单独的芯片设备,通过允许擦除和重新编程单个字节

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

TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt

 一、换内存,拆闪存:1、先原机开机试试是否功能正常;2、拆机,比较难拆,容易坏外壳;3、找到内存和闪存,用胶带把边上的小元件,电阻都贴好;4、加助焊油,用风枪拆掉内存,这个比较难,新手要注意,温度要在350以上;5、清理焊盘,加助焊油,用电烙铁将新的64M内存焊上。6、插电开机测试,64M内存是否正常使用,如果灯全亮有可能是虚焊或连锡;7、用电烙铁或风枪拆掉BIOS闪存,同样加油和清理盘二、提取BIOS和ART:1、将拆下旧的2M闪存放在编程中读出BIOS,保存,文件名:886N.bin;2、用WINHEX打开存好的886N.bin,定位到20800之后的64K,复制块3、用WINHEX新建

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

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

一、Marlin中存储到EEPROM的设置及相关参数介绍

目录相关G代码命令EEPROMEEPROMG代码保存的参数详情相关G代码设置命令M500将参数保存到EEPROMM501将EEPROM恢复默认源码设置,并通过串口打印M502将EEPROM恢复默认源码设置M503将EEPROM参数通过串口打印M504验证EEPROM的内容EEPROM大多数3D打印机的电子设备都包含一些存储空间(512K、3K或更多),称为EEPROM(电可擦除可编程只读存储器),断电后该存储空间仍然存在。Marlin使用EEPROM存储打印机设置并在下次机器启动时加载它们。更改源代码和重新刷新固件不会更改EEPROM的内容。启用EEPROM    默认情况下,EEPROM不使

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