下面的各个标题中的内容都是按照文档及各渠道的学习(主要看的是B站的江科大自化协)查询而记录的不同模块的最基本原理,没有多余的废话,一看就明白,每个实验都是上电通过OK的。由于复杂的操作都是由简单组合而成的,因此像网上的那些教程,比如跑马灯,动态数码管显示,本文均未给出具体代码,因为知道了如何去控制硬件,那上述操作就只需要处理代码逻辑就行了。所有的实验,原理都是基于单片机STC89C516,同系列的            
                
         
            
            
            
             Linux 下使用IIC总线 读写 EEPROM  by 韩大卫 @吉林师范大学
handawei@jusontech.com
                  转载请务必表明出处
******************* **********************************************
2012.7.16
1,本文给出了linux 下使用IIC总线读写EEP            
                
         
            
            
            
            要写的内容好像有点标题党的意思。早上收到邮件让我在860x_irq里打log看是不是插下充电器时会收到中断。结果最后还是发生了一次没有收到中断的情况。这个问题有点纠结啊。具体是啥也没有必要写了。估计应该是硬件有缺陷。上午服务器买了三块硬盘,做了一个raid5,我把硬盘扩展到分区上去了。三个300G的,做个raid后变600G,幸好上次修改服务器的时候把/work工作分区做成了lvm,这次扩展起来方            
                
         
            
            
            
            文章目录10 bit地址写操作组合操作10位地址中的保留地址1.广播寻址2.Start Byte3.Bus clear   10 bit地址I2C总线中使用10位地址扩展了7位地址位数,但是10位地址和7位地址的设备可以连接到相同的I2C总线中,并且7位和10位地址均可以在所有总线速度模式中使用。在产生开始条件或重复开始后,紧跟其后产生10位地址。10位地址要占据两个字节。第一个字节中,前7位是            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-11 17:32:43
                            
                                138阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            目录前言一、建立工程二、编写和移植前期准备驱动部分修改三、使用和验证结论 (2022年1月22日重制)本文主要是移植带简单图形库的程序,如果只是实现DMA控制,建议看【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动总结本文参考例程 提取码: sch3前言本文将介绍在STM32 HAL库下实现硬件IIC+DMA控制0.96寸 OLED屏,以及OLED图形库            
                
         
            
            
            
            一. 使用STM32CubeMX实现 IIC 通信打开STM32CubeMX,选择STM32103C8芯片,设置基本配置,设置时钟配置,打开USART1串口通信(使用轮询模式)。设置好之后,设置存储路径,选择所用IDE,然后点击GENERATE CODE创建工程,在弹出的open project打开工程进行全局编译。二. HAL库中IIC通信中断模式和DMA模式的重要函数1. 主设备发送数据到从设            
                
         
            
            
            
            I2C(Inter-Integrated Circuit BUS)是I2C BUS简称,中文为集成电路总线,是目前应用最广泛的总线之一,和IMX6ULL有些相关的是,恰巧该总线是NXP前身的PHILIPS设计。当前仍然是应用最广泛的总线协议之一。1 通用I2C协议介绍1)概述 I2C是一种串行通信总线,使用多主从架构,最初设计师为了让主板、嵌入式系统或手机用以连接低速周边设备而发展而来。在小数据量            
                
         
            
            
            
            文章目录1- I2C协议介绍(1)I2C协议简介(2)I2C从设备地址2- I2C通信时序(1)起始位(2)读写地址(3)I2C应答信号(4)数据位发送与接收3- I2C协议主机收发数据流程(1)主机发送数据(2)主机接收数据4- SHT30传感器介绍(1)SHT30简介(2)SHT30工作原理5- HAL库中I2C发送接收数据函数(1)HAL_I2C_Master_Transmit()(2)H            
                
         
            
            
            
            3  i2c-dev3.1 概述之前在介绍I2C子系统时,提到过使用i2c-dev.c文件在应用程序中实现我们的I2C从设备驱动。不过,它实现的是一个虚拟,临时的i2c_client,随着设备文件的打开而产生,并随着设备文件的关闭而撤销。I2c-dev.c针对每个I2C适配器生成一个主设备号为89的设备文件,实现了i2c_driver的成员函数以及文件操作接口,所以i2c-dev.c的主            
                
         
            
            
            
            #背景 其实这篇文章在很久之前就写过解决方法了。在经过不断的实践和深究后发现,硬件 I2C 死锁的问题在ST的官方手册中的勘误手册(errata)中早就提供解决方案,只是我没有重视官方的文档,一直在网络寻求帮助。即使已经有官方的解决方案,但是还有很多人(包括以前的我)在怀疑 STM32 系列的 I2C 有硬件 BUG。这也告诉我们:网上资源虽丰富,但还是得通过“金睛火眼”来辨别。讲真的,为了解决            
                
         
            
            
            
            I2C总线是飞利浦公司推出的一种串行总线,只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。每个接到I2C总线上的器件地址是唯一的。主机与其他器件间的数据传送可以是由主机发送数据到其他器件,这时候主机即为发送器。由总线上接收数据的器件则为接收器。常用的串行扩展总线有:I2C总线单总线SPI总线I2C总线的通信协议需要掌握以下6点:1.起始信号2.终止信号3.写数据4.读数据5.应答信号            
                
         
            
            
            
            注:此代码非常依赖编译器,环境不一样,效果也可能不一样,虽然效果可能不同,但底层原理不变,思路才是重中之重!这里本人使用的是vs2019编译器。 文章目录1. 正文1.1 代码运行结果1.2 调试过程1.3 发现死循环原因1.4 为什么i会改变?1.5 底层原理2. 总结 1. 正文这里有这样一段代码:int main()
{
    int i = 0;
    int arr[] = { 1,            
                
         
            
            
            
            硬件原理IIC.h代码实现 #ifndef __DRIVER_I2C_H
 #define __DRIVER_I2C_H#include "stm32f1xx_hal.h"
/*********************
  * 引脚宏定义
 **********************/
 #define SCL_PIN         GPIO_PIN_10
 #define SDA_PIN            
                
         
            
            
            
            
                    一什么是自动化测试 
 二移动自动化测试的流程 
 三移动自动化测试的优点 
 四移动自动化测试的缺点 
 五移动测试自动化框架Android 
 六Appium 
 我选择的是Appium为什么呢 
 Appium简介 
 Appium的要求 
 Appium概念 
 Appium的原理 
七什么是黑盒白盒测试一、什么是自动化测试 自动化测试是把以人为驱            
                
         
            
            
            
            如果是使用STM32CbueMX生成 I2C 的代码,使用 I2C 读写 过程会出现HAL_ERROR。这个时候一般有两种选择,          方式一:是选择IO模拟I2C;          方式二:是排查代码问题解决硬件I2C。使用DMA的时候有时候DMA启动失败,往往这是时候我们            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-07 13:46:12
                            
                                2832阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            i2c.h#ifndef I2C_H
#define I2C_H
#include <STC8H.H>
sbit SCL = P3^2;
sbit SDA = P3^3;
static bit I2C_Flage; 
/*P_SW2*/
#define EAXFR    0x80; //XFR寄存器使能
#define I2C_S    0x30; //I2C功能引脚切换,SCL            
                
         
            
            
            
            其实OLED算是非常常用的一个小模块了,之前用的一直用的是软件模拟的IIC,总的来说感觉还是都是有点"答辩",经常莫名其妙的就点不亮的,用了cubemx之后硬件iic配置就非常方便了,还是想用硬件iic,一方面是速率快,二是稳定。在百度搜了一圈也没发现什么好的,github上也有的是一堆答辩,找到一个用起来很不错的就分享一下github上的一个开源库。链接如下https://github.com/            
                
         
            
            
            
            对于嵌入式开发的朋友来说,I2C协议实在是再熟悉不过了,有太多的器件,采用的都是通过I2C来进行相应的设置。今天,我们就随便聊聊这个I2C协议。        I2C协议中最重要的一点是I2C地址。这个地址有7位和10位两种形式。7位能够表示127个地址,而在实际使用中基本上不会挂载如此多的设置,所以很多设备的地址都采用7位,所以本文接下来的说明            
                
         
            
            
            
            先来点题外话~网上说STM32F103的IIC有瑕疵!就当是有些短板吧, 
个人觉得,用起来肯定没问题,只是不好用。人家说ST公司考虑到专利问题,没按飞利浦的标准来。导致STM32的IIC使用起来非常繁杂。下面就讲讲用STM32 IO口模拟IIC的注意问题:       IIC总线时序: 
 我就因为没理解好应答,吃了亏。讲一讲IIC的几个重要状态            
                
         
            
            
            
             源码如下。 个人总结:1.I2DR寄存器的读I2DR寄存器的读操作如下,它与while(size--)中的size无联系,让我一开始觉得I2DR里面的数据就是不变的嘛!*buf++ = base->I2DR;//I2C读数据后来我查看了I.MX6ULL里面这样描述I2C的I2DR寄存器:“reading the dataregister allows a read to