求一个6410的IIC读写的应用程序源码 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 0%
Bbs8
本版专家分:34562
Blank
红花 2009年9月 硬件/嵌入开发大版内专家分月排行榜第一
2009年8月 硬件/嵌入开发大版内专家分月排行榜第一
2009年1月 硬件/嵌入开发大版内专家分月排行榜第一
2008年11月 硬件/嵌入开发大版内专家分月排行榜第一
2008年10月 硬件/嵌入开发大版内专家分月排行榜第一
Blank
黄花 2009年10月 硬件/嵌入开发大版内专家分月排行榜第二
2009年4月 硬件/嵌入开发大版内专家分月排行榜第二
2009年3月 硬件/嵌入开发大版内专家分月排行榜第二
2009年2月 硬件/嵌入开发大版内专家分月排行榜第二
2008年12月 硬件/嵌入开发大版内专家分月排行榜第二
Blank
蓝花 2009年7月 硬件/嵌入开发大版内专家分月排行榜第三
2009年6月 硬件/嵌入开发大版内专家分月排行榜第三
2009年5月 硬件/嵌入开发大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
6410 iic 读写问题
网上说<em>6410</em>的<em>iic</em>驱动有些问题,根据网上的资料修改了一下驱动后,用网上下载的<em>一个</em>exe测试程序随便<em>读写</em>都没有任何问题,网址如下:http://download.csdn.net/source/1488970rn后来我自己研究下驱动后,根据自己的理解写了<em>一个</em>测试的代码,可以<em>读写</em>,但是<em>读写</em>的数据很不正常。代码如下:请做过的高手指点错误:rnrnrnDWORDrnHW_WriteRegisters(rn PUCHAR pBuff, // Optional bufferrn UCHAR StartRegs,rn DWORD nRegs // number of registersrn )rnrn UCHAR tmpbuf[512];rn DWORD dwErr=1;rn DWORD bytes;rn IIC_IO_DESC IIC_Data;rn rn tmpbuf[0]=StartRegs;rn memcpy(&tmpbuf[1],pBuff,nRegs);rn rn IIC_Data.SlaveAddress = CAMERA_WRITE;rn IIC_Data.Count = nRegs;rn IIC_Data.Data = tmpbuf;rn rn // use iocontrol to writern if ( !DeviceIoControl(hI2C,rn IOCTL_IIC_WRITE, rn &IIC_Data, sizeof(IIC_IO_DESC), rn NULL, 0,rn &bytes, NULL) ) rn rn dwErr = 0;rn rn rnrn return dwErr;rnrnrnDWORDrnHW_ReadRegisters(rn PUCHAR pBuff, // Optional bufferrn UCHAR StartReg, // Start Registerrn DWORD nRegs // Number of Registersrn )rnrn DWORD dwErr=1;rn DWORD bytes;rn IIC_IO_DESC IIC_AddressData, IIC_Data;rn rn IIC_AddressData.SlaveAddress = CAMERA_WRITE;rn IIC_AddressData.Data = &StartReg;rn IIC_AddressData.Count = 1;rn rn IIC_Data.SlaveAddress = CAMERA_WRITE;rn IIC_Data.Data = pBuff;rn IIC_Data.Count = 1;rn rn // use iocontrol to read rn if ( !DeviceIoControl(hI2C,rn IOCTL_IIC_READ, rn &IIC_AddressData, sizeof(IIC_IO_DESC), rn &IIC_Data, sizeof(IIC_IO_DESC),rn &bytes, NULL) ) rn rn dwErr = 0;rn rnrn rn return dwErr;rnrnrnint _tmain(int argc, _TCHAR* argv[])rnrn DWORD i;rn UCHAR bufin[100];rn UCHAR bufout[100];rn DWORD nbyte=100;rn DWORD bytes;rn UCHAR StartAddr=0x2;rn UINT32 IICClock = 412500;rn UINT32 uiIICDelay;rn for(i=0;i)));rn return FALSE;rn rnrnrn //HW_WriteRegisters(&bufin[0],0,1);rn HW_ReadRegisters(bufout,StartAddr,1);rn CloseHandle(hI2C);rnrn return 0;rnrnrnrn程序大部分是参考camera驱动里的。rn
6410 IIC读写问题
最近一直在做IIC<em>读写</em>测试,网上下载的驱动测试程序可以正确<em>读写</em><em>一个</em>字节,但是整个<em>读写</em>就会导致SCL或者SDA一直为低。但是我自己的程序用示波器跟踪SCL和SDA信号一直都是高电平。由于是第一次接触这方面,不知道问题出在哪儿。后来终于发现,可以调整驱动从串口打印驱动运行的信息,经过对比两个程序打印的信息,发现我的程序根本没有进入iocontrol的case里面。对比驱动打印的信息,发现我的控制码有错误。  我的驱动中控制码是通过CTL_CODE(FILE_DEVICE_IIC, 0, METHOD_BUFFE
写Linux应用读写IIC 总线上的24c02 ,验证驱动是否正确
linux内核上已有<em>iic</em>的驱动,因此只需要对该<em>iic</em>设备文件进行<em>读写</em>则能够控制外围的<em>iic</em>器件。这里以AT24C02为对象,编写<em>一个</em>简单的<em>读写</em><em>应用程序</em>。<em>iic</em>设备文件在我的开发板上 /dev/i2c/0  ,打开文件为可<em>读写</em>。AT24C02的器件地址为0x50 ,既是<em>iic</em>总线上从器件的地址,每次只<em>读写</em>一字节数据。   /*******************************
IIC Linux 应用层的两种操作方式
一种是使用read and write的方式<em>读写</em>。一种是使用构造i2c_msg结构体的方式并利用ioctl的方式<em>读写</em>
linux I2C读写应用程序
linux下I2C的<em>读写</em><em>应用程序</em>
IIC的读写时序问题
首先要明确的是两张<em>读写</em>的协议图,后续要严格按照协议来写程序就可以了。读时序下面就以AT24Cxx为例详细说明一下:首先发出<em>一个</em>start信号,从设备地址,R/W(0,写),回应ACK表示有这个从设备存在。这时候是处理器从指定的从设备读数据的从设备里8bit存储地址的指定。所以这里R/W是0为写。ACK回应有这个设备的话,处理器把要访问的从设备里的8bit存储地址写好。ACK对方回应。继续<em>一个</em>star
I2C总线浅谈之(三)---以C语言实例分析IIC
为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形: 如下图所示的写操作的时序图:   读时序的理解同理。对于时序不理解的朋友请参考“I2C总线浅谈之(二)---时序 完整的程序如下:   #include #define uchar unsigned char #define uint unsigned int #define write_ADD
EEPROM—_IIC总线编程,用按键控制IIC写入读取数据并由数码管显示
关于IIC串行总线的组成及工作原理 1.采用串行总线技术可以使系统的硬件设计大大简化,系统的体积减小,可靠性提高,同时,系统的更改和扩充极为容易。 2.常用的串行扩展总线有:IIC(Inter IC BUS)总线、单总线,SPI总线及Microwire、PLUS 3.IIC是一种串行总线,只有两根双向信号线: ...
通过IIC模拟24c16读写程序
程序可对24C16进行<em>读写</em>控制,本程序代码已经通过实践
IIC多字节读取
#include "wx_i2c.h" #define IIC_Write_Address 0xa0 //Write Address #define IIC_Read_Address 0xa1 //Read Address #define IIC_SDA_DAT GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)#define IIC_SDA_L GPIO_R
学习笔记——51通过IO口模拟IIC实现AT24C02的读写
1.硬件连接AT24C02是<em>一个</em>2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有<em>一个</em>8字节页写缓冲器。该器件通过IIC总线接口进行操作,有<em>一个</em>专门的写保护功能。在单片机上的应用广泛, 可以实现掉电数据不丢失功能。2.AT24C02<em>读写</em>时序说明:(1)写数据描述:通过IIC几种信号的组合,可以向AT24C02指
IIC的地址
7位寻址在7位寻址过程中,从机地址在启动信号后的第<em>一个</em>字节开始传输,该字节的前7位为从机地址,第8位为<em>读写</em>位,其中0表示写,1表示读。图1:7位寻址。I2C总线规范规定,标准模式I2C,从机地址为7位长,其次是读/写位。任何I2C设备都必须遵循这个标准,USB2XXX传输的从机地址即为这7bit地址,不包含<em>读写</em>位,<em>读写</em>位会根据不同的函数自动添加进去。保留地址I2C规范保留了两组和8个地址,1111...
读取Linux中I2C数据——c程序
关于在Linux下读取I2C数据。该程序主要是在树莓派中读取AMG8833传感器中的64个温度数据,借鉴了一些网上的方法,然后参考芯片的数据手册,数据的存储格式,本芯片是2个字节存放<em>一个</em>数据。#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;sys/stat.h&amp;gt;...
单片机模拟IIC时序读写24C02
一、什么是IIC总线 IIC即集成电路总线,也是一种非常常用的总线是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。 注意:IIC芯片在工业上的应用也是非常重要的,与串口、SPI、CAN等总线齐名。 二、IIC总线协议简介 IIC串行
STM32 GPIO 模拟IIC (I2C) c语言 源代码(测试绝对可用)
STM32 GPIO 模拟IIC (I2C) c语言 源代码(测试绝对可用) 用STM32 GPIO模拟IIC 的c语言源代码,自己的项目中的,绝对可用。
stm32学习笔记---IIC通信以及用IIC实现EEPROM的读写
   IIC通信 #include &quot;i2c_driver.h&quot; #include &quot;systick_driver.h&quot; #define GPIO_PORT_I2C GPIOB /* GPIO端口 */ #define RCC_I2C_PORT RCC_APB2Periph_GPIOB /* GPIO端口时钟 */ #define I2C_SCL_PIN GPIO_Pin_6...
友善之臂Mini2440之嵌入式Linux下应用程序对Nand Flash的读写操作
<em>应用程序</em>对Nand Flash的<em>读写</em>操作 接上篇继续分析Nand Flash驱动:Nand Flash的设备探测函数s3c24xx_nand_probe的动作。 s3c24xx_nand_probe函数首先创建代表MTD原始设备的数据结构体struct mtd_info *mtd,并将其初始化,源代码如下所示: /* s3c24xx_nand_probe  * called by devi
IIC读写AT24C02代码2——串口命令控制多页读写
通过串口输入 R 、W 进行控制程序<em>读写</em>IIC设备。波特率9600bps,晶振115200HZ。 main.c   /*----------------------------------------------- IIC编程 1 编写:Louis 邮箱:kaly.liu@163.com 日期:2015.06.01 修改:通过串口命令R/W,控制EEPROM的读R写W...
IIC读写16位地址的寄存器
一般来说IIC器件的内部寄存器地址都是8位的,这样在进行<em>读写</em>操作时,发送完器件地址之后直接发送<em>一个</em>字节的寄存器地址,然后即可以进行<em>读写</em>。但是有的器件内部寄存器是按照16位地址编排的,例如一些EEPROM器件,由于存储的数据量较大就会需要较大的寻址空间,对于这种的器件的内部寄存器寻址就需要多个字节的地址,也就是在发送完器件地址之后需要发送多个寄存器地址字节,具体实现如下程序所示: u8 IIC_R
STM32 IIC通信往24C02写数据、读数据
1、24C02模块的原理图:从图中可以看出,A0、A1、A2三个引脚全部接地,说明表示器件地址7位数据后三位全部是0       注:当上<em>一个</em>数据写完之后,若发送停止信号,则至少停下10ms时间后,才能再发送起始信号,这个时间就叫做写周期。 3、器件寻址:                    4、字节写:                 5、写页:
宋老师IIC读写方法
/* E2读取函数,buf-数据接收指针,addr-E2中的起始地址,len-读取长度*/void E2Read(unsigned char *buf, unsigned char addr, unsigned char len){    do {                       //用寻址操作查询当前是否可以进行<em>读写</em>操作        I2CStart();        if (I...
Linux下I2C应用程序
#include #include #include #include #include #define I2C_RDWR 0x0707 struct i2c_rdwr_ioctl_data { struct i2c_msg  *msgs; /* pointers to i2c_msgs */ unsigned int nmsgs; /* number
STM32—基于模拟IIC方式读取EEPROM
  前言: 最近在调试STM32L152芯片利用IIC接口读取EEPROM的程序,总结下STM32的 IIC接口 读取EEPROM的使用方法。 PS:由于STM32的硬件IIC存在一些问题,本文暂时使用模拟IIC进行EEPROM的读取。STM32的硬件IIC使用方法见另外两篇文章:传送门1和传送门2。 硬件平台:STM32L152 软件平台:keil v5+cubeMX 函数库:HAL...
关于6410 IIC读写AT24C02!做过的请进!
这两天在编写测试<em>6410</em> IIC,发现<em>一个</em>非常奇怪的问题,rn 读数据时会产生数据终止,不是每次都会,但多读了几次就一定会产生数据异常。异常信息如下:rn[color=#FF0000]Exception 'Data Abort' (4): Thread-Id=01840006(pth=85aa48d4), Proc-Id=00400002(pprc=82699308) 'NK.EXE', VM-active=04ec0006(pprc=849cda50) 'explorer.exe'rnPC=c0b721cc(s3c<em>6410</em>_<em>iic</em>.dll+0x000021cc) RA=c0b721b8(s3c<em>6410</em>_<em>iic</em>.dll+0x000021b8) SP=d283fe64, BVA=0004f2cd[/color]rnrn应用里面读取一Byte数据函数如下:rnvoid CIICDlg::IICReadModeOneByte(void)rnrn UCHAR OutputBuf=0;//read on bytern DWORD ReadBytes;rn IIC_IO_DESC IIC_AddressData, IIC_Data;rn char AddrBuf[4];rn UCHAR WordAddr=0;rn CString str;rn char xx[4];rnrn m_addr_buf.GetWindowTextW(str);rn wcstombs(AddrBuf, str, sizeof(AddrBuf));//str->pOutputrn WordAddr = atoi(AddrBuf);rn RETAILMSG(1, (TEXT("[APP IICReadModeSingle]: WordAddr = 0x%x\r\n"), WordAddr));rnrn /*Dummy write*/rn[color=#0000FF] IIC_AddressData.SlaveAddress = IicSet.slave_addr;//writern IIC_AddressData.Data = &WordAddr;//start addrrn IIC_AddressData.Count = 1;//sizeof(WordAddr);rnrn IIC_Data.SlaveAddress = IicSet.slave_addr;//|0x1;//readrn IIC_Data.Data = &OutputBuf;rn IIC_Data.Count = 1;//sizeof(OutputBuf);rnrn if (!DeviceIoControl(hIic,IOCTL_IIC_READ, &IIC_AddressData, sizeof(IIC_IO_DESC), &IIC_Data, sizeof(IIC_IO_DESC),&ReadBytes, NULL)) rn rn m_receive_buf.SetWindowTextW(TEXT("IIC read single data failed !"));rn rn elsern rn [/color]rn
基于FPGA EEPROM读写实现及IIC总线协议和时序分析
结构框图引脚说明 串行时钟信号引脚(SCL):在 SCL输入时钟信号的上升沿将数据送入 EEPROM器件,并在时钟的下降沿将数据读出。 串行数据输入/输出引脚(SDA): SDA 引脚可实现双向串行数据传输。该引脚为开漏输出,可与其它多个开漏输出器件或开集电极器件线或连接。 器件/页 地址脚(A2,A1,A0): A2、A1 和 A0 引脚为 24C01与 24C02 的硬件连接的器件地址输入引脚。
Linux下的eeprom读写操作(IIC)
利用Linux内核自带的IIC总线驱动,按系统提供的框架,用ioctl方法对eeprom设备进行<em>读写</em>操作,并分别按单字节及多字节<em>读写</em>方式,对外提供函数接口,以供外部程序方便调用。   程序由3个文件组成,分别为头文件
IIC时序详解
AT24C02是由ATMEL公司提供的,IIC总线串行EEPROM(electronic eraser programmer read only memory),其容量为2kbit(256B),工作电压在2.7v"5.5v之间,生产工艺是CMOS。      一般数字芯片都在左下角和右上角为GND,VCC。容量的计算方法:AT24Cxx :01"1024   容量 = xx * 1k
OK6410裸机简单NANDFLASH初始化及读写擦除
OK<em>6410</em>裸机简单的NANDFLASH<em>读写</em>及擦 文章转载请注明出处:http://blog.csdn.net/wf395962475/article/details/8221250 今天完成了OK<em>6410</em>裸机简单的NANDFLASH<em>读写</em>及擦除,那么直接进入正题。 我的操作环境是: 主机:WIN7系统, VMware RHEL5  8.0 虚拟机。 开发板:OK641
单片机之IIC--AT24C256的读写程序
     <em>一个</em>通用的24C01-24C256共9种EEPROM的字节<em>读写</em>操作程序,此程序有五个入口条件,分别为<em>读写</em>数据缓冲区指针,进行<em>读写</em>的字节数,EEPROM首址,EEPROM控制字节,以及EEPROM类型。此程序结构性良好,具有极好的容错性,程序机器码也不多:DataBuff为<em>读写</em>数据输入/输出缓冲区的首址Length 为要<em>读写</em>数据的字节数量Addr 为EEPROM的片内地址 AT24256为...
记录一下IIC读和写的时序
           经常使用IIC接口,可谓是操作各类IC芯片的家常便饭.不过说实话硬件IIC,每家MCU都弄得不一样,好烦躁。IIC  读时序:      Read从图中可以看出; 这读的波形可相当漂亮:(1)起始信号: 绿点. SCL高电平的时候,SDA由高变低。这个是由主机产生。(2)Read: 0x73 最后一位是1 说明读, addr(7位) 填上第0位是 R(1)或者W(0) 标志位...
基于verilog的EEPROM读写
I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL这里以<em>一个</em>byte的<em>读写</em>为例时序图:写时序 读时序 通过时序图可知,IIC读的时候需要先完成写的控制字和地址的命令,因为读的部分和写的部分有重复,所以这里的IIC控制模块我使用状态机来完成的,划分状态时,写时序的start—ack_low_addr这段为复用状态控制命令和状态的定义//instru parameter
STM8L硬件IIC从机
STM8L 的硬件IIC从机,调试通过可以使用
IIC设备驱动程序(五)————IIC设备实例化的四种方法
IIC设备的四种实例化方法
IIC接口的铁电存储器测试程序,已通过验证
IIC接口的铁电存储器测试程序,已通过验证
android读写iic设备
在android开发和移植过程中,有时需要对某设备进行<em>读写</em>,但系统可能并未提供相应的服务。我们就需要自己开发硬件访问服务来控制设备。下面的例子是<em>读写</em>最简单的i2c设备eeprom的流程, i2c的驱动编写有两种方式,一种是利用系统提供的i2c-dev.c来实现<em>一个</em>i2c适配器的设备文件,然后通过在应用层操作I2C适配器来控制I2C设备;另一种是为I2C从设备独立编写<em>一个</em>设备驱动,不需要i2c-de
IIC连续读写出错检查办法
单片机连续<em>读写</em>出错 现象:读取单个字节的时候是正确的,但连续读或连续写会出错 经过排查, 1、发现单片机连续读epprom时,没有回应ack 2、start –&amp;gt; send 器件地址写–&amp;gt; epprom存储地址 –&amp;gt; 器件地址读 时,中间有步骤出错 #include &amp;lt;reg52.h&amp;gt; #include &quot;intrins.h&quot; #include &quot;type....
Android平台读写i2c设备开发笔记一
在android开发和移植过程中,有时需要对某设备进行<em>读写</em>,但系统可能并未提供相应的服务。我们就需要自己开发硬件访问服务来控制设备。下面的例子是<em>读写</em>最简单的i2c设备eeprom的流程, i2c的驱动编写有两种方式,一种是利用系统提供的i2c-dev.c来实现<em>一个</em>i2c适配器的设备文件,然后通过在应用层操作I2C适配器来控制I2C设备;另一种是为I2C从设备独立编写<em>一个</em>设备驱动,不需要i2c-de
AT24Cxx芯片读写--IIC总线
型号               容量               器件寻址字节(8位)       一次装载字节数  AT24C01        128×8        1010A2A1A0 R/W                 8 AT24C02       256×8         1010A2A1A0 R/W                 8  AT24C04      
模拟IIC 24cxx系列 读写eeprom 连续读写 页写 stm32 24c128 24c256
24c系列的快速<em>读写</em>eeprom,同等情况下,使用页写的方式,比传统的<em>一个</em><em>一个</em>字节的写快64倍,适用于需要快速<em>读写</em>的领域,1s可以传输6k左右的数据,<em>读写</em>稳定。
【原创】zynq-7010下运用I2C总线完成对LSM303D传感器的数据读取
这是本人第一次写博客,我的毕设在用FPGA去读取LSM303D传感器的中的三轴的磁场强度数据,这也是我第一次用zynq-7010板子,第一次接触Vivado,我用了将近两个月的时间摸索,中间经理很多失败的尝试,还好最近有了突破,因为目前网上基本没有关于FPGA读取LSM303D的资料,所以这也是我写这篇博文的出发点。
基于嵌入式linux iic 总线读写mpu6050
/************************************************************/ //文件名:mpu6050.c //功能:测试linux下<em>iic</em><em>读写</em>mpu6050程序 //使用说明: (1) // (2) // (3) // (4) //作者:huangea //日期:2016-10-03 /***
Android平台读写i2c设备开发笔记
在android开发和移植过程中,有时需要对某设备进行<em>读写</em>,但系统可能并未提供相应的服务。我们就需要自己开发硬件访问服务来控制设备。下面的例子是<em>读写</em>最简单的i2c设备eeprom的流程, i2c的驱动编写有两种方式,一种是利用系统提供的i2c-dev.c来实现<em>一个</em>i2c适配器的设备文件,然后通过在应用层操作I2C适配器来控制I2C设备;另一种是为I2C从设备独立编写<em>一个</em>设备驱动,不需要i2c-de
PIC单片机-普通IO口模拟I2C总线对24C02进行读写操作
使用PIC单片机的普通IO口模拟I2C总线,对24C02进行<em>读写</em>操作。其中,总线定义为: #define       IIC_SCLK     RC3      //24C02时钟线 #define      IIC_SDAT     RC4      //24C02数据线 将跳线帽P11短接至24C02方向,将跳线帽P6段接至IIC方向。 I2C 总线协议规定任何将数据传送到总线的
应用层读写I2C信息,可读写寄存器为8位或者16位的reg信息
 #include "standard_i2c.h" #include #include #include #include #include #include #include #include #include #include #if 0 #include #include #else #define I2C_M_WT    0x
IIC 之深入理解原理
//  秉着  授人之鱼 不如授人之渔的态度。 本人决定 在以后的日子里,着重讲思想。    /*通过写<em>iic</em> ,得出以后调协议类 程序的方法。 1: 如果该协议不能够工作 ,首先需要一台示波器,将其两个通道分别挂在 时钟线和数据线上。注意:在挂示波器的同时  也要讲你的从机挂载上,便于从机的应答信号和数据可以在示波器上显示出来 。(如果io口输出不接任何设备,只接了示波器,则从示波器中只能
IIC 读写操作 Linux下读写芯片的I2C寄存器
    要想在Linux下<em>读写</em>芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章《手把手教你写Linux I2C设备驱动》已经做了初步的介绍,并且留下了两个疑问尚未解决,第<em>一个</em>是如何对Linux提供的I2C操作函数进行进一步封装,实现对芯片寄存器的<em>读写</em>;另<em>一个</em>是如何在用户空间调用该I2C驱动代码。本文将讨论前<em>一个</em>问题。     ...
stm32I读写AT24c02(IIC通讯)
AT24c02驱动编写,stm32IO口模拟模拟IIC时序,实现写入数据与读出数据功能
linux IIC子系统分析(一)——AT24C02 芯片简介
现在很多地方都有应用到eeprom存储芯片,主要是因为它现在存储空间越来越大,价格越来越便宜,我使用的mini2440开发板上贴的是AT24C02,与S3C2410的IIC相连接,为了更好的学习Linux的IIC子系统,了解IIC芯片操作方式是非常有必要的。AT24C02芯片特性和引脚功能定义直接看Datasheet就可以了。我只关注设备地址和操作方式,我们实际应用中知道这些就可以操作它了。1.A...
单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
/*     51系列单片机在使用时,有时需要模拟I2C总线,                      *//*   这里举出<em>一个</em>实例(<em>读写</em>串行EEPROM芯片at2402)                       *//************************************************************************//* Name:AT24C
STM32的IIC_EEPROM读写测试(STM32神舟IV号-库函数版)程序,亲测能用
程序内有详细的讲解文档,很好的学习资料,欢迎大家下载学习
IIC方式读驱动AT24C16芯片
闲来无事,找了块msp430的板子编写了个IIC驱动AT24C16的程序。 IIC作是一种简单,双向,同步的二进制总线,由SDA数据线和SCL时钟线组成,所有接到IIC总线上的各设备的SDA数据线都连接到总线的SDA数据线上,用来进行数据的传输;所有接到IIC总线上的各设备的SCL时钟线都连接到总线的SCL时钟线上,用来同意时钟。以下是IIC的各个状态: 当总线是空闲状态时,都为SCL和SDA...
6410 iic测试问题
请问大家 wince下 在<em>6410</em>中typedef struct _IIC_IO_DESC rn UCHAR SlaveAddress; // Slave Addressrn // UCHAR WordAddr;rn PUCHAR Data; // pBufferrn DWORD Count; // nBytes to read/writern IIC_IO_DESC, *PIIC_IO_DESC; 没有定义字节地址 那我怎样将数据写入地址中呢 大家帮帮忙啊
IIC详解,包括原理、过程,最后一步步教你实现IIC
IIC详解 1、I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL      2、IIC总线上可以挂很多设备:多个主设备,多个从设备(外围 设备)。上图中主设备是两个单片机,剩下的都是从设备。  3、多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。I2C通过总线仲裁,以决定哪台主机控制总线
FileMon 是一个出色系统文件监视工具,可以监视应用程序进行的文件读写操作
FileMon 是<em>一个</em>出色系统文件监视工具,可以监视<em>应用程序</em>进行的文件<em>读写</em>操作,localizer、hacker 或 cracker 必备。
IIC总线协议---以存储芯片at24c64为例
IIC总线协议 前言:年前给老师做个红外抄表系统,,现在对当中用到的一些模块总结一下. 1.只有在总线空闲时才允许启动数据传送.2.在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变.时钟线为高电平时,数据线的任何电平变化将被看做总线的起始或停止信号.3. 任何将数据传送到总线的器件作为发送器任何从总线接收数据的器件为接收器, 主器件和从器件都可以作
6410 IIC驱动源码
三星的驱动 <em>6410</em>IIC驱动有很多bug,这个是自己修改后已测试不会报错的版本。
基于OK6410开发板Uboot源码简单分析
2018-04-07OK<em>6410</em>开发板是基于三星S3C<em>6410</em>芯片设计的一款开发板,资源比较丰富,可是想要使用这些资源就需要编写相应的启动引导程序,即BootLoader。当然,想要自己凭空写出BootLoader那简直就是天方夜谭,所以我们需要参考行业中现有的BootLoader,在其基础上再结合实际的控制芯片和开发板相关硬件资源编写适合自己的BootLoader代码。如今市面上常用的嵌入式Bo...
51单片机的i2c多字节的读写24c02
#include          //头文件的包含 #include #define  _Nop()  _nop_()        //定义空指令 // 常,变量定义区 unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,            
DSP 的IIC控制
一般DSP上面都集成了I2C模块,这样在连接外部器件时可以很方便的控制外部的器件。I2C基本上都是用于外部控制的,因为是是串行总线。在我们的实验板上I2C总线连接到了两个从设备上面,<em>一个</em>是我们的eeprom,另<em>一个</em>是我们的音频芯片AIC23。通过I2C协议我们写入和读取eeprom数据,控制AIC23的声音一些属性! 简介一下I2C协议的规则: 一. 技术性能: 工作速率有100K和400K
BQ27510模拟IIC读取数据详解
关于TI 的BQ系列电池管理芯片详细操作步骤。这款芯片功能还是很强大的,具体的我就不介绍了,查看datasheet。 本文介绍主要是通过模拟IIC读取BQ27510数据。 1、模拟IIC:之所以用模拟IIC是应为比较灵活一点,便于调试。对于模拟IIC可以看IIC通信协议写相关的函数;一般如果在调试IIC时用示波器看数据不稳定,示波器闪屏,一般是延时不够造成的。模拟IIC就不多介绍了,这个程序写
STM32驱动PCF8563,使用模拟IIC
#ifndef PCF8563_CFG_H #define PCF8563_CFG_H ////////////////////////////////////////////////////////////////////////////////////// //------------使用包含的头文件 #include &quot;i2c_task.h&quot; #ifdef USE_MCU_STM32 #i...
RT-thread学习笔记1 I2C设备驱动学习之EEPROM驱动(上)
RT-thread中关于I2C设备驱动主要有i2c_core.c、i2c_dev.c、i2c-bit-ops.c这个几个文件,这次的主要任务就是结合提供的i2c驱动库编写eeprom的<em>读写</em>函数,基于ALIENTEK MINI STM32作为开发平台。     第一步:由于RT-thread中的i2c-bit-ops.c文件中已经实现了i2c的总线驱动,我们只需要完成关于结构体rt-i2c-b
dsp2812 IIC EEPROM读写数据实验程序
dsp2812 IIC EEPROM<em>读写</em>数据实验程序,适用于新手学习,已调试
STM32使用模拟IIC实现24C02读取
1.与硬件IIC的比较 1.1.使用灵活 可使用任意2个IO口实现,不用受芯片管脚限制; 1.2.速率快 通过调整延时,可以实现超过400k的速率,实际测试最大速率接近800k; 1.3.容错性强 硬件IIC在通信出错后,无法自行恢复,模拟IIC则可以迅速恢复; 2.底层接口函数 2.1. I2C_Start 2.2. I2C_Stop 2.3. I2C_SendACK
24c16、24cxx系列 原子demo模拟iic读取出现0xff的问题
    在之前一直使用原子的模拟<em>iic</em>在各种stm32单片机上用时没有过这种情况,这次在PIC单片机上使用时出现了这个问题。无论如何<em>读写</em>都是0xff。在经过多天排查之后最终发现是问题在原子的demo的<em>iic</em>.c里面的发送启动和结束信号的时序导致的。先贴原子代码如下://产生IIC起始信号 void IIC_Start(void) { SDA_OUT(); //sda线输出 IIC_SD...
iiC原理以及源码例程
iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>iiC原理&<em>源码</em>
STM32F4 I2C/IIC 驱动程序
STM32F4的I2C配置,已经写好了读函数可写函数,由I2C.c和I2C.h组成,直接可用
命令行读写i2c寄存器操作
写命令格式: 寄存器地址 长度 数据 读命令格式: # echo “寄存器地址” &amp;gt; getreg # cat getreg 1.使能寄存器 # adb shell &quot;echo &quot;0x01,0x01,{0xff}&quot; &amp;gt; /sys/bus/i2c/devices/1-20/setreg&quot; 2.禁掉寄存器 # adb ...
IIC读取AT24C256数据出现的问题及解析
硬件平台STM32F407ZGT6,AT24C256软件平台MDK5,GPIOG_PG2->SCL,GPIOG_PG3->SDA,属于软件模拟IIC问题描述在用逻辑分析仪分析时序时发现时序完全没问题,如图:向地址为7FFFH的地址写0X55: 对地址为7FFFH的地址读数据: 由图可以看出写并没出现问题,问题出在读数据时。读时序正确,但是读出来的值为0XFF,这是个错误值,因为前面我已经向改
嵌入式硬件之IIC
IIC硬件连接 SCL : 时钟线 SDA : 数据线 IIC是一种半双工通信协议,输入输出数据都是在SDA上传输,具体是输入还是输出靠IIC开始第一次发送的地址字节的最后<em>一个</em>bit决定, IIC是真正的多主机总线,IIC可以在通信中切换主机,如果有多个主机争抢总线,会由总线仲裁防止数据总线SDA的数据被破坏 IIC硬件上SCL、SDA必须上拉到高电平(因为协议中高电平意味着空闲状态)...
USB转I2C/IIC适配器上位机应用程序
Ginkgo USB转I2C适配器的上位机软件,很方便对I2C接口的芯片进行<em>读写</em>控制,对验证I2C接口的芯片功能很有帮助!
Linux驱动学习笔记----------IIC框架与流程(一)
历时<em>一个</em>月期末课程设计终于结束了!发现好多东西忘记了,<em>iic</em>流程也有些淡忘,有点慌,夜深人静的时候就整理下吧!还有,杭州最近热的我脑袋都不好用了!关于<em>iic</em>: 1.是一种数据传输协议(spi,usb,sdio,uart…) 2.速度比较:<em>iic</em> < spi < sdio < 网络 < usb 3.它是一种半双工通信方式(两
LINUX的IIC从这开始(一)
首先介绍一下所分析LINUX的版本:linux-3.0.8
按位读写16位数据
将数据按内存<em>读写</em>,不关心存储的值在10进制中表现为什么,仅关心其在内存中的表现,直接使用位操作符,实现数据的按位<em>读写</em>。 读取给定数据value中,自起始位begin开始的count个位,返回读取到的数据: unsigned short readBit(unsigned short value, int begin, int count) { if(begin+count-1 > 1
USB转I2C/IIC上位机调试软件Classic版本
Ginkgo USB-I2C适配器上位机软件Classic版本,利用该软件可以实现对I2C接口的任何芯片进行数据<em>读写</em>控制,方便开发调试!
基于mini2440的IIC读写(裸机)
在mini2440开发板提供的源代码中IIC操作的源代码写的比较乱,在此根据数据手册和芯片手册,直观的编写代码,有中断模式和轮询模式,两种模式的操作方式相差不大。
iic读写程序
<em>iic</em>的<em>读写</em>程序C语言类.<em>读写</em>时序,<em>读写</em>控制等
基于S3C6410的ARM11学习(一) 基础知识
手上有一块OK<em>6410</em>的板子,就想起来花点时间学习下经典的ARM系列ARM11。了解一下ARM11的开发流程,以及怎么跑系统。 ARM11和之前学习的STM32的开发是很不一样的。STM32,都是把代码烧到STM32芯片FLASH中,然后代码从FLASH中执行,而且程序执行是不需要外部挂ram的,因为芯片的内部就集成了一定大小的ram。 而ARM11是不一样的,内部没有FLASH和ra
STC12C和C51单片机IIC读写AT24C02
STC12C5A IIC接口<em>读写</em> AT24C02 89C5A IIC <em>读写</em>AT24C02 51的的protuse仿真
使用逻辑分析仪分析IIC时序常见问题
1.当IIC时序出现某一连续段出现NAck时,考虑是芯片写入时的时间较长,可以尝试增长延时时间。后面持续出现NAck,则在连续写的中间插入延时函数,同理,前面出现就在最开始的地方延时。 …….持续更新
构建驱动模块2--STM32模拟IIC访问 (AT24C02)EEPROM 操作
            构建驱动模块2-- STM32模拟IIC访问 (AT24C02)EEPROM 操作         模拟IIC接口可以使用任意两个IO口实现,不受芯片引脚限制,而且硬件IIC在通信出错后,无法自行恢复,模拟IIC则可以迅速恢复;通过调整延时参数,可以调节访问速度。本程序把模拟II2C封装成<em>一个</em>模块,AT24C02只需要调用该模块即可。 1、初始化EEPROM设备。调用...
linux I2C读写实例 .
这段时间搞<em>一个</em>电容触摸屏,经过实验摸索终于试出来了,因为以前是没有专门搞过这块的,这下积攒了十足的经验。有两个关键地方做下说明: (1)I2C器件<em>读写</em>函数。时序如下: 根据特性,我没有使用smbus的<em>读写</em>函数,还是用的I2C<em>读写</em>函数来处理: static struct i2c_client *g_client;             //本I2C器件注册的client端 static
I2C总线的连续读和连续写
想写个在给地址后能一直读或写的程序,因为郭天祥的教程里只有单个字节<em>读写</em>示例。可在网上找了好久没找到合适的示例,只好自己看着手册,慢慢摸索。皇天不负苦心人呀,终于出来了。 写完程序的同时也学会了怎样看手册的时序图。   还有此代码只实现了同时写读两个字节,至于在未达到芯片页面通信量的最大值的范围内都可以用FOR循环实现。下面就是代码:  #include #include   #def
STM32F10x_硬件I2C读写EEPROM(标准外设库版本)
Ⅰ、写在前面 上一篇文章是“STM32F10x_模拟I2C<em>读写</em>EEPROM”,讲述使用IO口模拟I2C总线通信,对EEPROM(AT24Xxx)进行<em>读写</em>操作的过程。 上一篇文章主要内容:I2C协议、模拟I2C底层驱动、EEPROM(AT24Xxx)单字节<em>读写</em>操作。 本文主要内容:STM32硬件I2C详细配置、EEPROM(AT24Xxx)多字节<em>读写</em>操作、ST官方I2C存在问题。   实例
I2C关于读写控制位
*1、I2C协议简介* 2、空闲开始/应答/结束信号 2.1空闲 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。 2.2 开始和结束 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向
IIC常遇问题
面试的时候主要会遇到的IIC问题如下 介绍一下你了解的I2C? I2C总线是飞利浦(PHLIPS)公司推出的一种串行总线,用于连接微控制器及其外围设备, I2C串行总线有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 它仅通过两根信号线就可以完成对所有挂载在I2C总线上的从器件进行操作。这样的好处是可以大大的节省我们微处理器的IO口资源。 I2C到底可以挂载多少个器件
IIC读写AT24C02代码1——通过串口命令控制R/W
IIC<em>读写</em>AT24C02代码1——通过串口命令控制R/W,并显示到串口!   主函数 /*----------------------------------------------- IIC编程 1 编写:Louis 邮箱:kaly.liu@163.com 日期:2015.05.25 修改:通过串口命令,控制EEPROM的<em>读写</em>。并从串口提示。 晶振:11.059...
S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作。
这篇文档算上期末复习这段时间其实拖了有好久了,因为从一开始接触linux的i2c驱动体系我就各种凌乱,经常性的在看内核代码时看着看着就把自己看飞了。结果就是无功而返,还使自己挫败感爆表,丧失信心。所以我决定当前阶段把结构体熟悉,知道大致的驱动体系框架。日后真正做到此类项目时再来深入理解,总结。
STM32系统学习——I2C (读写EEPROM)
I2C 通讯协议(Inter-Integrated Circuit)引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是
对 IIC 总线的理解、调用函数以及常见面试问题
一、IIC 总线概述:IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 二、IIC 总线通
一个用硬件IIC连接MPU6050的例子
<em>一个</em>用硬件IIC连接MPU6050的例子,示例代码是stm32f10x的,开发工具是keil
嵌入式内核及驱动开发之学习笔记(十六) IIC子系统框架使用
本章通过IIC子系统软件框架,实现驱动让应用层I2C读取从设备的功能。硬件上,通过I2C主控制器读取mpu6050陀螺仪和加速度数据信息。   简介 I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、...
应用程序和驱动中使用I2C的流程
<em>应用程序</em>和驱动中使用I2C的流程 编写I2C设备驱动有两种方法。一种是利用系统给我们提供的i2c-dev.c来实现<em>一个</em>i2c适配器的设备文件。然后通过在应用层操作i2c适配器来控制i2c设备。另一种是为i2c设备,独立编写<em>一个</em>设备驱动。注意:在后一种情况下,是不需要使用i2c-dev.c的。 前一种方法也就是说只要系统实现了I2C适配器的驱动并生成了设备文件, 那么挂在其上面的I2C设备也可以
Linux-IIC驱动(4)-自编IIC设备驱动程序
在分析驱动程序之前我们再来分析一下IIC子系统的模型。IIC的设备驱动中有2中方式,一种是通过通用驱动来编写用户驱动。另一种就是直接在IIC子系统中添加<em>一个</em>IIC的设备驱动,比如说针对AT24C02的驱动程序。 接下来我们来学习怎么编写<em>一个</em>IIC设备驱动。 1、驱动程序分析 我们先在Linux内核代码中打开<em>一个</em>叫做At24.c的文件,只要是 属于AT24开头的设备都可以使用
IIC读写16位地址的寄存器(有的器件内部寄存器是按照16位地址编排)
一般来说IIC器件的内部寄存器地址都是8位的,这样在进行<em>读写</em>操作时,发送完器件地址之后直接发送<em>一个</em>字节的寄存器地址,然后即可以进行<em>读写</em>。但是有的器件内部寄存器是按照16位地址编排的,例如一些EEPROM器件,由于存储的数据量较大就会需要较大的寻址空间,对于这种的器件的内部寄存器寻址就需要多个字节的地址,也就是在发送完器件地址之后需要发送多个寄存器地址字节,具体实现如下程序所示:   u8 I...
IIC设备驱动程序(九)————用户态直接访问IIC设备
用户态直接访问IIC设备实例
文章热词 机器学习 机器学习课程 机器学习教程 深度学习视频教程 深度学习学习
相关热词 c++读写 lmdb 源码 c++求一个逆矩阵 c++求一个不多于五位数的 c++求一个数组的长度 python开发应用程序教程 pythonexcel读写教程
我们是很有底线的