首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
单片机i2c接口锁了
2024-09-02
解决STM32 I2C接口死锁在BUSY状态的方法讨论
关于STM32的I2C接口死锁在BUSY状态无法恢复的现象,网上已有很多讨论,看早几年比较老的贴子,有人提到复位MCU也无法恢复.只有断电才行的状况,那可是相当严重的问题.类似复位也无法恢复的情况是存在的,技术支持矢口否认问题存在,并不是正确面对问题的态度.比如我用这款F439芯片的SDRAM控制器,在错误操作后进入HardFault状态,复位无法恢复,JTAG也无法联机,只能断电重来,官方的Erratasheet里也提到了. 如果I2C接口无法可靠工作,那么所做的设计将存在严重隐患,不可能要求
EEPROM的操作---SPI接口和I2C接口
参考:http://blog.csdn.net/yuanlulu/article/details/6163106 ROM最初不能编程,出厂什么内容就永远什么内容,不灵活.后来出现了PROM,可以自己写入一次,要是写错了,只能换一片,自认倒霉.人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次.历史的车轮不断前进,伟大的
(6)s3c2440用I2C接口访问EEPROM
在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下. 本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpio.c,依然没调出来.如果有示波器,可能很快就能找到原因,现在完全不知道问题出在哪里.其实想用GPIO模拟I2C的目的很简单,以一种简单而又深刻的方式来理解I2C. 既然这条路暂时没法走,退而求其次,用s3c2440的
JZ2440 裸机驱动 第12章 I2C接口
本章目标: 了解I2C总线协议: 掌握S3C2410/S3C2440中I2C接口的使用方法: 12.1 I2C总线协议及硬件介绍 12.1.1 I2C总线协议 1 I2C总线的概念 2 I2C总线的信号类型 3 I2C总线的数据传输格式 12.1.2 S3C2410/S3C2440 I2C总线控制器 1. S3C2410/S3C2440 I2C总线控制器寄存器介绍 S3C2410/S3C2440的I2C接口有4种工作模式:主机发送.主机接收.从机发送. 从机接收.其内部结构如图12.6所
树莓派配置RTC时钟(DS3231,I2C接口)
1.购买基于DS3231的RTC时钟模块,并且支持3.3V的那种 2.配置树莓派 a.打开树莓派的i2c接口 sudo raspi-config -->Interfacing Options -->I2C,全部选择yes b.添加i2c模块 sudo nano /etc/modules 然后添加以下两行内容: i2c-bcm2708 i2c-dev c.安装i2c工具,查看i2c设备b sudo apt-get install i2c-tools
linux 标准i2c接口(一)
一:I2C设备操作方式: 1. 应用程序操作法:i2c的设备的驱动可以直接利用linux内核提供的i2c-dev.c文件提供的ioctl函数接口在应用层实现对i2c设备的读写,但是在应用层使用ioctl函数对应用程序员要求较高,需要自行构建msg结构体,必须了解设备的操作流程,时序之类的. 这方式实现需要用用程序员调用 read, write, ioctl, open, close等linux标准文件接口操作/dev/i2c(X)设备文件. 2. 驱动程序操作法:i2c设备的驱动也可以通过普通
【编程之美】常用于单片机的接口适配器模式C语言实现
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/lihuidashen/p/12875018.html 微信链接:https://mp.weixin.qq.com/s/rXfKnFrBY-9OjnzCgBtQ6g 前言 通俗的讲,适配器模式是将一个类的接口转换成客户希望的另外一个接口,在我们编写程序的时候,尤其是在我们使用到单片机做项目的时候,经常会用到. 但是往往我们做项目写程序的
BMP280 driver对接单片机I2C或者SPI总线接口
1:登录github网站搜BMP280,找到 BoschSensortec/BMP280_driver 2:gitclone或者download zip都可以,把驱动下载到本地,记得fork哦! 3:阅读驱动的readme文件 4:readme前面分别是目录.概要.和版本介绍,略过 5:我们关注的焦点也是重点是:传感器初始化即:Initializing the sensor,以I2C为例讲解如下: 咱们按照要求先定义一个结构体 struct bmp280_dev bmp; 这个结构体最重要的是实
i2c接口笔记
一. i2c基础知识 1. NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号.Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始. 2. i2c write的时候,master在写完最后一个字节之后Slave会回ACK,然后master发送stop信号结束通信 3. i2c read的时候,master在接收完slave发送的最后一个字节之后会回NAK,因为这个时候master已经接收到足够的字节,NAK告诉slave不要在发
为 MaixPy 加入软 I2C 接口(移植 MicroPython 的 I2C)
起因 本文的重心为讲解如何为一款芯片移植和实现 micropython 的通用组件,但会顺带解释不同芯片的工作方式和特性. 国际惯例,先有起因,再谈问题的解决,所以记得上次总结的 关于 K210 MaixPy 的 I2C 读取设备,搜索不到设备,通信失败的一些原因以及解决方案.. 而这次终于出现了两个 I2C 从机扫不到的情况,分别是 MLX90640 和 tcs34725 传感器. 可能の问题分析 我们需要注意一个事实就是,无论是在 STM32 / ESP32 / K210 时期都会发生的事情
51单片机I2C总线
I2C总线是飞利浦公司推出的一种串行总线,所有器件共用两根信号线,实现数据的传输. 总线接口接了上拉电阻,默认为高电平,所以就可以用"当低电平出现"来标记出一种起始信号.我个人把它想象成:许多人在一条走廊上的不同房间(器件)里,大家都把门打开,连出两根长长的听筒(小时候玩的那种),每个人都从两根大主线上各接一根到自己房间里.两根听筒平时都是安静的(1).如果有某房间的人叫了一声(0),那剩下的人就知道,我们准备开始通话了. 为了保证秩序,大家选出一个人当领队,由他来主导通话的过程.这就
C51 I2C接口驱动,IO口模拟I2C(主+从)
Master.asm ;/*------------------------------------------------------------------*/ ;/* --- STC MCU International Limited -------------------------------*/ ;/* --- STC 1T Series MCU Simulate I2C Master Demo ------------------*/ ;/* --- Mobile: (86)139
协议类接口 - I2C
一.12c总线概述 I2C( Inter-Integrated Circuit,又称IIC)总线是一种串行总线,用 于连接微控制器及其外围设备,硬件图非常简单:一条串行数据线(SDA),一条串行时钟线(SCL )一根接地线(GND). 它具有如下特点: 1)每个连接到总线的器件都可以使用软件根据它的惟一的地址来识别(具体地址需要查阅具体的I2C设备). 2)传输数据的设备间是简单的主/从关系.主从式结构,通信双方必须一个为主(master)一个为从(slave),主设备掌握每次通信的主动权,从设
嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32...................................................................................................................... 11.1. 课前预习..........................................................................................
Uart、SPI和I2C的区别
串口通信:UART.SPI.I2C区别[引用] 1.UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少.数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快.在多机通信上面用的最多. 2.SPI接口和上面UART相比,多了一条同步时钟线,上面UART的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快.一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等. 3.I2C接口也是两线接口,它是两根线之间通过复杂的逻辑关系
[I2C]I2C架构分析
转自:http://blog.csdn.net/wangpengqi/article/details/17711165 1. I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. 因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中. 2. linux下的驱动思路 在linux系统下编写I2C驱动,目前主要有两种方法
Linux设备驱动模型之I2C总线
一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2C总线驱动(I2Cadapter):I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力.I2C总线驱动由i2c_adapter和i2c_algorithm来描述 (3)2C设备驱动(I2Cclient driver):包括两部分:设备的注册和设备驱动的注册 2.I2
嵌入式Linux内核I2C子系统详解
1.1 I2C总线知识 1.1.1 I2C总线物理拓扑结构 I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成.通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递.在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平. 1.1.2 I2C总线特征 I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(可以从I2C器件的数据手册得知),主
linux i2c驱动架构-dm368 i2c驱动分析
linux i2c驱动架构-dm368 i2c驱动分析 在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinci.c).标题党请见谅! 其实i2c接口非常的简单,即使用51单片的gpio来模拟i2c,编写一个e2prom或者其他i2c接口的驱动程序,也不是什么难事,几百行代码就能搞定. 但是Linux的i2c驱动体系结构却有相当的复杂度,不管是叫linux i2c驱动还是单片机i2c驱动,其根本还是操作so
UART、SPI和I2C详解
做单片机开发时UART,SPI和I2C都是我们最经常使用到的硬件接口,我收集了相关的具体材料对这三种接口进行了详细的解释. UART UART是一种通用串行数据总线,用于异步通信.该总线双向通信,可以实现全双工传输和接收.在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信. 将由计算机内部传送过来的并行数据转换为输出的串行数据流.将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用.在输出的串行
热门专题
pyqt5 QChart好卡
elasticsearch去重查询
java多线程常用方法
xshell开源替代
python制作excel条形图
如何调处浏览器的命令
ReplacementSpan 字体大小
krpano hotspot css 样式
Qt QString类型设置文字颜色
php 小程序如何统计pv uv
subprocess kill 无法完成
stl mapkey相同
qfile不覆盖写入
pycharm设置连接其他机器的python
照着powerdesigner 建表报错
PHP中的取模运算符是什么符号
iOS 位移动画结束后 更新view位置
opennebula官网
js 阻止监听事件发生
python执行abbacabb.strip(ab)的结果