首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
Stm32f10x 用软件模拟i2c从机
2024-11-10
STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
Ⅰ.写在前面 关注我分享文章的朋友应该知道我在前面讲述过(软件.硬件)I2C主机控制从机EEPROM的例子.在I2C通信主机控制程序是比较常见的一种,可以说在实际项目中,很多应用都会使用到I2C通信.但在实际项目中作为I2C从机的应用相对要少的多,本文主要讲述关于[STM32F10x_硬件I2C主从通信]中STM32作为从机的例子. 在学习本问内容之前,如果对I2C协议还不太了解的朋友请先去了解一下I2C协议,或看我之前关于I2C通信的文章(我微信公众号和博客都有). 关于STM32硬件I2C作
模拟I2C从机
模拟I2C主机的比较多,但是从机相对主机而言要难很多,这个供大家借鉴. 这个从机程序支持主机对它的随机写和随机读,连续读和连续写没做,有兴趣的可以完善下,呵呵. //Microcontrol CODE #include <msp430x22x4.h> #define SDA BIT1 #define SCL BIT2 #define SEG_A 0xA0 //0x0200---0x027F #define SEG_B 0xB0 //0x0280---0x02FF #define SEG_C 0
软件模拟I2C通讯
I2C协议概述,有相当详细的名词解释: 通信数量受限于地址空间和400Pf总线电容. 所有的数据传输过程中,SDA线的电平变化必须在SCL为低电平时进行,SDA线的电平在SCL线为高电平时要保持稳定. I2C通讯协议软件模拟实现方法: 1.起使信号 void I2C_Start(){ SDA_H; 3 delay(n); //电平切换时间 SCL_H; delay(>4us); //初始状态必须保持4us以上 SDA_L; //在SCL为高时,拉低SDA线发送起始信号. delay(>.7us
GPIO软件模拟I2C
/***************************************************************************** * * Filename: * --------- * soft_i2c.c * * * Description: * ------------ * Use GPIO simulate I2C interface. * * Author: * ------- * jimmy.li ******************************
模拟I2C从机程序
;Slave.asm SCL BIT P1. SDA BIT P1. ;---------------------------- ORG RESET: SETB SCL SETB SDA CALL I2C_WAITSTART ;等待起始信号 CALL I2C_RXBYTE ;接收地址数据 CLR C CALL I2C_TXACK ;回应ACK SETB C ;读/写 IDATA[80H - FFH] RRC A ;读/写位->C MOV R0,A ;地址送入R0 JC READDATA ;C=1
软件模拟I2C时输入与输出切换
一 为达到类似C51的操作需要添加以下位带操作:#include "stm32f10x_gpio.h"#include "stm32f10x_conf.h" /* IO地址映射*/#define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BA
STM32F10x_模拟I2C读写EEPROM
Ⅰ.写在前面 说到IIC,大家都应该不会陌生,我们初学单片机的时候或多或少都知道或了解过,甚至使用I2C控制过器件.但是,有多少人真正去深入理解,或者深入研究过I2C通信协议呢? 1.我们有必要学习I2C通信吗? I2C作为常见串行通信的其中一种,在嵌入式领域中占有很重要的地位.原因在于我们嵌入式开发的产品中有很多设备都是使用I2C进行通信的.我们开始学习单片机开发的时候最先接触的应该是使用I2C操作EEPROM(如AT24C08)通信,这也是典型的I2C通信例子.其实还有很多常见的I2C通信设
I2C总线协议的软件模拟实现方法
I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入.输出和高低电平变化,来模拟I2C总线通讯过程中SCL.SDA的电平变化来实现的. 2. I2C总线的封装 每个处理器对应的GPIO操作都有差异,即使是同一款处理器,不同的人也会有不同的GPIO封装风格,就以我个人习惯用的GPIO方法为例来进行讲解.我习惯上将GPIO的组和位封装为一个结构体,这样使
I2C软件模拟协议与电容触摸控制
I2C 与 Touch slide 最近做了一个与触摸滑条相关的测试,利用I2C通讯协议来配置触摸控制芯片的相关寄存器,读取触摸读数,并通过STM Studio动态显示触摸读数的变化过程.这个测试相对简单,只要搞定I2C通讯协议,后面的触摸控制芯片的相关寄存器配置就变得很简单了,所以我就简单地总结一下I2C通讯部分笔记. 实验平台:IAR 及 STM Studio 实验主芯片:自制STM8L051/101评估板 触摸控制芯片:ProxSense IQS263 使用硬件触摸滑条(Touch sli
stm32软件模拟IIC读取PX4FLOW光流传感器数据
这段时间在做全国光电设计大赛,用到了px4的px4flow光流传感器,用软件模拟iic读取数据不定期会导致px4flow死机,查了资料和光流的源码,发现这个光流用了stm32的硬件iic,所以对软件模拟iic的时序要求可能更高一点所以在原子哥的iic程序上做了修改,代码测验后已经不会死机,做个笔记,保存一下. #include "myiic.h" #include "delay.h" //初始化IIC void IIC_Init(void) { 19 GPIO_In
S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动
目录:一. 说明 二. 驱动程序说明及问题 三. 案例一 四. 案例二 一. 说明 mini210开发板上带了at24c08, 看了linux内核自带的at24.c的驱动程序,编译下载到看发板,读写都行:通过增加一些调试信息,对linux i2c驱动其中的编写方法之一有了一定了解,在我的另外一篇博文有详细说明.但同时对在linux下GPIO模拟i2c产生了兴趣,于是就写这篇博文来记录驱动编写过程中遇到的问题.如果想了解了i2c时序,请google或百度一下. 本篇博文通过misc驱动
MSP430的IO口模拟I2C总线对AT24C25进行读写程序
功能: 实现MSP430口线模拟I2C总线协议与24C04通信. ** 描述: 主系统工作时钟为12MHz,I2C工作时钟频率为1MHz.给某地址写入一个数据 ** 再读出来,如写入前和读出后的数据一致,则P1.0输出高电平,否则输出低电 ** 平.
STM32F207 两路ADC连续转换及GPIO模拟I2C给MT9V024初始化参数
1.为了更好的方便调试,串口必须要有的,主要打印一些信息,当前时钟.转换后的电压值和I2C读出的数据. 2.通过GPIO 模拟I2C对镁光的MT9V024进行参数初始化.之前用我以前公司SP0A19芯片,是I2C是8位宽的,而镁光的地址是8位,而数据位是16个字节, 其实不管是8位还是16位,每次发送都是8个字节然后一个应答位,所以只要稍微改下代码即可. 3.实现两路ADC连续转换,两路ADC转换:一路是检测锂电池电压:一路是检测压力传感器,其实都是检测电压,当检测到压力为零,并累计多长时间后进
关于模拟I2C的一些问题???
1.在调试BH1750时发现stm32f103rb单片机用模拟I2C通讯时引脚使用开漏模式能正常读出来数据,使用推挽模式则完全无法通讯,发送地址后从机没有应答? https://blog.csdn.net/qq_24025329/article/details/81218030 上面这篇文章有详细讲解
STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ.写在前面 SPI(Serial Perripheral Interface)串行外设通信接口,主要实现设备(主从)之间的通信.硬件上由CS.SCK.MISO.MOSI四根通信线连接而成.关于SPI更多介绍不再详细描述,本文主要以STM32F103为主机.W25Q16为从机进行SPI通信实验. 本文将提供S
STM32 软件模拟 IIC 代码,标准库、HAL库可用
#ifndef _IIC_H #define _IIC_H #include "stdio.h" #include "stm32f1xx_hal.h" /* 定义控制 SDA SCL 的宏 标准库版 #define I2C_SDA_UP GPIO_SetBits (GPIOC,GPIO_PIN_8) //SDA高电平 #define I2C_SDA_LOW GPIO_ResetBits(GPIOC,GPIO_PIN_8) //SDA低电平 #define I2C_S
软件模拟spi的注意事项
前几天遇到了软件模拟spi的时候,读和写不一致的现象,后来仔细研究了一下,其实是时序性问题不对. spi的有四种时序,硬件实现的时候,很简单,初始化后直接调用api即可.但是软件模拟就比较麻烦. 举例如下: 读时序如下: 写时序如下: 这两个结合起来就是下面四种spi模式的第四种 也就是模式2,如下所示: 值得注意的是: 按照上面的时序图,单片机应该是在上升沿输出数据(即写数据), 但是,读数据,看时序图好像是也上上升沿,其实是错误的,应该是下降沿读数据,即单片机在下降沿的时候采样丛集的数据.
STM8S 模拟I2C程序
STM8S的硬件I2C还是存在问题,不敢贸然使用. 于是决定用模拟I2C. #define SCL PE_ODR_ODR1 #define SDA PE_ODR_ODR2 #define SDAM PE_IDR_IDR2 #define SET_SCL_OUT() {PE_DDR_DDR1=1; PE_CR1_C11 = 1; PE_CR2_C21 = 0;} #define SET_SDA_OUT() {PE_DDR_DDR2=1; PE_CR1_C12 = 1; PE_CR2_C22 = 0
C51单片机模拟I2C总线驱动程序设计
/********************************** I2C总线驱动 ******************************** 模块名:I2C总线驱动 型号:I2C 功能描述: 此模块包括发送数据及接收数据,应答位发送,并提供了几个直接面对器件的操作 函数,能很方便的与用户程序进行连接并扩展.需要注意的是,函数是采用延时方法产 生 SCL 脉冲,对高晶振频率要做一定的修改!!在写E2PROM的时候一定要延时!!! 说明: 1us机器周期,晶振频率要小于12MHz 返回
STM32F10x_模拟I2C读写_硬件I2C读写
STM32F10x_模拟I2C读写EEPROM STM32F10x_硬件I2C读写EEPROM(标准外设库版本) STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器(转)
源:硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器 硬件上由于24c01的A0A1A2管脚不允许悬空,故暂时的想法是兼容24c02 ---24c16 使用一个dip8封装的芯片插座,A0 A1 A2管脚都悬空即可,换芯片方便 软件上24c02地址只有8位,而其他型号是大于8位的,故地址参数使用16位 256个字节作为一个大页,即largePage,测试芯片24c04空间有512字节 上代码,求测试和讨论 #include "MY51.H" //转载请注明:http://xo
热门专题
list 变为 逗号分隔的字符串
java list 根据字段排序 取前几条
VScode格式化HTML代码保持标签属性换行
Subversion 中的重新定位
elasticdump 导出指定字段
linux 查看进程有一长一短两个
sql当identity_insert设置为off时
函数在程序运行过程中不断地循环
卸载 重装gnome 仍进不去系统
python中with open as的意思
arcgis for js 3.x渐变色填充
echarts图表的共同点
Java计算五个同学的平均分
vs2022 工具箱无图标
.net 获取域账号密码
【USACO题库】2.2.4 Party Lamps派对灯
navicat premium 导入乱码
西门子S7一200SMAR 百度网盘
线程池在电商系统下的具体使用场景
Python有几种类型图像