草庐IT

I2C从机

全部标签

i2c-tools工具集

一i2c-tools工具集介绍i2c-tools是一个专门调试i2c设备的开源工具集,在嵌入式开发中经常使用,该工具集包含以下命令:i2cdetect、i2cdump、i2cget、i2cset。i2c-tools的重要意义就是开发人员既不需要编写复杂的Linux驱动、也不需要编写应用程序,只需要输入几个简单的命令就可以调试i2c设备,比如:设置i2c设备寄存器获得i2c设备寄存器的值二i2c-tools工具集详细操作i2cdetect:查询开发板包含的i2c总线和外设,看以下命令:i2cdetect-l探测开发板包含的i2c总线从命令执行结果可知,开发板包含2个i2c总线控制器i2cdete

Linux I2C驱动分析2 - 通过设备树添加设备

一.I2C通过设备树添加设备    通过设备可以向I2C总线添加I2C设备,设备树举例如下:i2c:i2c@900{compatible="ralink,rt2880-i2c";reg=;resets=;reset-names="i2c";#address-cells=;#size-cells=;pinctrl-names="default";pinctrl-0=;oled{compatible="oled0.98";reg=;};};    设备树中在I2C总线下添加了一个oled0.98设备,oled在I2C总线中的地址为0x3c。可以在/sys/bus/platform下看到这个设备。#

【分析笔记】全志 i2c-sunxi.c 控制器驱动分析

分析平台:全志A64内核版本:Linux4.9数据手册:Allwinner_A64_User_Manual_V1.1.pdf(whycan.com)驱动框架I2C设备驱动作为方案应用来说,我们是最经常要动的地方,这一层主要与具体的芯片功能强关联,不同的芯片具有不同的使用方法,如触摸屏设备驱动。核心框架层Linux提供的硬件抽象层,起到承上启下的作用,对上提供注册设备驱动的统一接口,对下提供硬件控制器接入统一接口,负责维护众多的设备驱动和适配器驱动。适配器层由Soc芯片原厂提供,通常Soc支持多少路I2C总线,就会有多少个硬件控制器,这些硬件控制器才是真正实现与外设芯片通信的地方。我们也可以通过

【SPI】STM32 SPI 双机通信,SPI从机模式使用

文章目录一、SPI主机配置二、SPI从机配置三、双机通信1轮询+中断(低速)2轮询+DMA(低速)3DMA+DMA(高速)4开启CRC校验(自选)四、遇到的问题1高速使用时,程序卡死,或者数据出错(已解决)2数据莫名其妙乱码,主机发送正常,接收乱码等最近要用到STM32的SPI从机模式,从其他板子读SPI数据过来,踩了2天坑,记录一下过程。(因为hal库提供了三种函数,我调试的过程是阻塞、中断、DMA依次来调试学习的,这份代码为使用DMA方式的代码。)软件:keil5、STM32CubeMX硬件:两块STM32F103C8T6最小系统实现功能:两块板子进行SPI通信,一主一从,都是使用的SPI

HDL语言与验证-I2C

 工程文件:电子测试平台2        这个实验的第一部分写个状态机还是很简单的,第二部分I2C只给了一份没什么注释的代码......。看懂后我写了一个老师给出的IIC代码的解释,但是md格式丢掉了,PDF在github上,可以参考一下。HDL语言与验证实验一、自定FSM说明1、状态描述      设计如下状态,表示单日活动轨迹:S0:宿舍休息S1:起床并吃早餐,吃完后有课则上课(b=1),无课自习,体温异常(T>37)则留在寝室休息S2:12节上课,若34有课则继续去上课(c=1),否则自习S3:12节自习,若34有课则去上课(c=1),否则自习S4:34节上课,结束后去吃午餐S5:34节

HDL语言与验证-I2C

 工程文件:电子测试平台2        这个实验的第一部分写个状态机还是很简单的,第二部分I2C只给了一份没什么注释的代码......。看懂后我写了一个老师给出的IIC代码的解释,但是md格式丢掉了,PDF在github上,可以参考一下。HDL语言与验证实验一、自定FSM说明1、状态描述      设计如下状态,表示单日活动轨迹:S0:宿舍休息S1:起床并吃早餐,吃完后有课则上课(b=1),无课自习,体温异常(T>37)则留在寝室休息S2:12节上课,若34有课则继续去上课(c=1),否则自习S3:12节自习,若34有课则去上课(c=1),否则自习S4:34节上课,结束后去吃午餐S5:34节

多线程交替输出A1B2C3D4...你怎么实现?

引言不知道最近有没有小伙伴去面试,今天了不起回想到了早期去面试遇到的一个多线程面试问题。面试问题是一个笔试题:两个线程依次交替输出A~Z,1到26,形如A1B2C3D4...当时的我还很菜,用了原生的线程,借助wait和notify方法实现。伙伴们你们也可以先暂停,自己思考下用什么方式来实现。今天了不起和伙伴们一起来基于JDK1.8进行实现方式的探索,请看下文。1.使用线程方法wait()方法会使当前线程释放锁,并进入等待状态,直到以下情况之一发生:被其他线程调用notify()方法唤醒;被其他线程调用notifyAll()方法唤醒;被其他线程中断。notify()方法用于唤醒一个正在等待的线

【FPGA】十一、I2C通信回环

文章目录前言一、I2C简介二、I2C原理2.1、I2C物理层2.2、I2C协议层2.2.1、I2C协议2.2.2、I2C数据传输格式2.2.3、I2C写操作2.2.4、I2C读操作三、项目设计3.1、任务需求3.2、状态机设计3.3、程序代码3.4、仿真验证总结前言    在前面的文章内容中我们提到常用的三个低速串行通信总线,即uart、I2C和SPI,uart串口协议前面我们已经对它做了一个详细的说明了,相信大家也都理解了它的原理,还是比较简单的。今天我们就来对I2C协议作一些简单的说明与介绍,并采用I2C协议实现通信回环功能,深入理解I2C主机与从机的时序以及其中的判断逻辑。一、I2C简介

IIC通信从机无应答(读取数据始终为0XFF)

在做项目的时候遇到的问题,IIC通信时读取数据始终为0XFF下面从写数据开始介绍向从机写数据步骤为:开始信号->发送从机地址->等待应答->发送寄存器地址->等待应答->写数据->等待应答->停止信号等待应答时,若SDA为0则代表成功应答用示波器查看波形发现,在发送地址后SDA为高,无应答,说明未查询到从机而从机数据手册中地址为0x6D,我最开始出错的代码如下 IIC_Write(0x6D,0x30,1,yali_ctrl);//在地址0x6D从机的0x30寄存器中写入yali_ctrl的指令unsignedcharIIC_Write(unsignedcharaddr,unsignedchar

51单片机存储篇:EEPROM(I2C)

先认识I2C通信基本概述 IIC(Inter-IntegratedCircuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I²C的正确读法为“I平方C”("I-squared-C"),而“I二C”("I-two-C")则是另一种错误但被广泛使用的读法。自2006年10月1日起,使用I²C协议已经不需要支付专利费,但制造商仍然需要付费以获取I²C从属设备地址。I2C总线是一种同步、半双工,带数据应答的二线制串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息