导航:首页 > 编程语言 > i2c唤醒芯片代码

i2c唤醒芯片代码

发布时间:2023-04-04 06:43:33

㈠ i2c和i2s

I2S(Inter-IC Sound Bus)是飞利浦公司颂燃为数字音频设备之间的音频 数据传输而制定的一种总线标准。

i2c(发音为:”I squared see”)能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的并唯能力,它们可以作为发射器或接收器工作。多路微野蔽虚控制器能在同一个I2C总线上共存。

㈡ 关于I2C程序

AT的没有具体去看他的daatsheep
一般的 24都是允许一次性全部读出的只要你的时序没有问题
另外ack信号迟一专点发送属 不会影响读写的
你可以仔细看一下 at的 daatsheep看有没有256字节的限制.

普通的24是01-128字节 02=256字节...16=2047字节..
超过部分..器件会自动回到0地址处理,
/////////////////////////////////////////////
看了一下你,后面添加的程序.
如果你这样写.那么read_all那边就不需要用参数了.
因为如果读取,一般都是从0开始读取的..

另外x24c08_read如果是单字节读写函数.而且是正确的话
那么用
for (ii=0;ii<4;ii++)
{
for (iii=0;iii<256;iii++)
{
c=x24c08_read(ii,(uchar)iii);
SBUF=c;
while (!TI);
这种方式的读取一定是没有问题.
有问题就是你的代码..或者你的eep本身坏了.
如果你感觉时许地上对的话..不妨看一下.
//////////////////////////////////

㈢ QN8027芯片的I2C通信过程

QN8027是使用于便携式设备高性能数字调频发射芯片。

为了设计一袭闭历台拍搜数字式的FM发射系统,我们首先需要了解一下这颗芯片与MCU的工作过程。

左右模拟音频信号输入后经过VGA的调整,由两个高分辨率ADC采样数字化。预加重和MPX进行编码。如果RDS寄存器使能时,RDS信号也将与MPX信号和混合,组合的输出将被馈送到一个数字FM调制器,随后将FM信号载波为RF。然后对RF信号进行滤波,并通过功率放大器放大。

其中,IC与MCU的通信态纤使用I2C通信协议来完成。

㈣ 两个51单片机如何通过i2c通讯

一般情况下,要进行I2C通讯,你最起码其中有一个芯片要本身就带有I2C通讯接口,用这个带有I2C接口的芯片来作从器件,这样就相返巧对好处理一点。你要是两个都不带这个接口,来模拟的话,很有难度。除非你对I2C协议很清楚,不过从楼主的提问来看,估计就不怎么熟悉这种协议。
所以建议还是用别的通讯方式吧,比如用SPI,相对会好处理一点,用其中一个芯片的INTx来模拟CS接口,作为从器件在中断中来处理,另外一个就模拟主器羡竖件来控制从器件,这样或许会好弄点。如果楼主确实需要通讯,还是赶快换个思路吧,要是卡在一个地方动不了,会耽误你的进程的兄世大,祝你好运!

㈤ 如何写linux的I2C驱动,更具体的是加密芯片at88sc0104c的驱动

直接在应用空间写吧,驱动的话要复杂点,会给你增加难度的。

在应用空间用/dev/i2cdev 来访问i2c 设备的例子,你直接 吧。
加密芯片的话,一般厂家都有支持代码的吧,不过不一定是linux 平台的,你把访问i2c 的那部分改改就成了。

㈥ 什么是I2C,I2C有什么作用

I²C(Inter-Integrated Circuit)是内部整合电路的称呼,是一种串行通讯总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边装置而发展。I²C(读作"I-squared-C" ),还有可选的拼写方式是I2C(读作I-two-C)以及IIC(读作I-I-C),在中国则多以"I方C"称之。
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线支持任何IC 生产过程(CMOS、双极性)慎孝。通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。LCD 驱动器只能作为接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。
特征:
亩吵1、只要求两条总线线路:一条串行数据线SDA,一条串宽耐稿行时钟线SCL;
2、每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;
3、它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;
4、串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s;
5、连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。

㈦ I2C接口4/5/6/7/8/9/10/12/16键低功耗抗干扰触摸触控IC(芯片)-VK36N4-10/12/16I

        VK36N4I/5I/6I/7I/8I/9I/10I/12I/16I对应4-10/12/16键触摸按键,可用来检测外部触摸卜此扰按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。芯片内部采用特殊的集成电路,具有高电源电压抑制比,可减少按键检测错误的发生,此特性保证在不利环境条件的应用中芯片仍具有很高的可靠性。具有自动校准功能,低待机电流,抗电压波动等特性,为各种触摸按键+IO输出的应用提供了一种简单而又有效的实现方法。
        特性: 工作电压:2.2V~5.5V&nBSP(Q361/888/5898); 低待机电流10uA/3V  低压重置(LVR)电压2.0V  4S自动校准功能  可靠的触摸按键检测  无键按下4S进入待机模式  防呆功能长按10S复位  具备抗电压波动功能  I2C输出+INT中断脚  专用管脚外接电容(1nF-47nF)调整灵敏度OPT管脚选择输出低有效还是高有效  极少的外围组件
        VK36N4I/5/6/7/8/9/10I是内建LDO高灵敏度低功耗且抗干扰的触摸IC
————————————
触摸触控IC系列简介如下:标准触控IC-电池供电系列:

VKD223EB ---

工作电压/电流:2.0V-5.5V/5uA-3V   感应通道数:1    通讯接口最长响应时间快速模式60mS,低功耗模式220ms    封装:SOT23-6

VKD223B ---

工作电压/电流:2.0V-5.5V/5uA-3V  感应通道数:1    通讯接口最长响应时间快速模式60mS,低功耗模式220ms    封装:SOT23-6

VKD233DB ---

工作电压/电流:2.4V-5.5V/2.5uA-3V  1感应按键  封装:SOT23-6

通讯接口:直接输出,锁存(toggle)输出  低功耗模式电流2.5uA-3V

VKD233DH ---

工作电压/电流:2.4V-5.5V/2.5uA-3V  1感应按键  封装:SOT23-6

通讯接口:直接输出,锁存(toggle)输出  有效键最长时间检测16S

VKD233DS ---

工作电压/电流:2.4V-5.5V/2.5uA-3V  1感应按键  封装:DFN6(2*2超小封装)通讯接口:直接输出,锁存(toggle)输出  低功耗模式电流2.5uA-3V

VKD233DR ---

工作电压/电流:2.4V-5.5V/1.5uA-3V  1感应按键  封装:DFN6(2*2超小封装)通讯接口:直接输出,锁存(toggle)输出  低功耗模式电流1.5uA-3V

VKD233DG ---

工作电压/型旦电流:2.4V-5.5V/2.5uA-3V  1感应按键  封装:DFN6(2*2超小封装)通讯接口:直接输出,锁存(toggle)输出   低功耗模式电流2.5uA-3V

VKD233DQ ---

工作电压/电流:2.4V-5.5V/5uA-3V  1感应按键  封装:SOT23-6

通讯接口:直接输出,扒毁锁存(toggle)输出    低功耗模式电流5uA-3V

VKD233DM ---

工作电压/电流:2.4V-5.5V/5uA-3V  1感应按键  封装:SOT23-6 (开漏输出)通讯接口:开漏输出,锁存(toggle)输出    低功耗模式电流5uA-3V

VKD232C  ---

工作电压/电流:2.4V-5.5V/2.5uA-3V 

 感应通道数:2  封装:SOT23-6

通讯接口:直接输出,低电平有效  固定为多键输出模式,内建稳压电路

MTP

触摸IC——VK36N系列抗电源辐射及手机干扰:

VK3601L  ---

工作电压/电流:2.4V-5.5V/4UA-3V3  感应通道数:1  1对1直接输出待机电流小,抗电源及手机干扰,可通过CAP调节灵敏  封装:SOT23-6

VK36N1D ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:1  1对1直接输出触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏封装:SOT23-6

VK36N2P ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:2    脉冲输出触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏封装:SOT23-6

VK3602XS ---

工作电压/电流:2.4V-5.5V/60UA-3V  感应通道数:2  2对2锁存输出低功耗模式电流8uA-3V,抗电源辐射干扰,宽供电电压   封装:SOP8

VK3602K ---

工作电压/电流:2.4V-5.5V/60UA-3V   感应通道数:2  

2对2直接输出低功耗模式电流8uA-3V,抗电源辐射干扰,宽供电电压   封装:SOP8

VK36N2D ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:2   1对1直接输出触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏封装:SOP8

VK36N3BT ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:3  BCD码锁存输出触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏  封装:SOP8

VK36N3BD ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:3  BCD码直接输出触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏  封装:SOP8

VK36N3BO ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:3  BCD码开漏输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP8/DFN8(超小超薄体积)

VK36N3D ---

工作电压/电流:2.2V-5.5V/7UA-3V3  感应通道数:3  1对1直接输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N4B ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:4    BCD输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N4I---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:4    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N5D ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:5  

1对1直接输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N5B ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:5    BCD输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N5I ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:5    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N6D ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:6  

1对1直接输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N6B ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:6    BCD输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N6I ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:6    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N7B ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:7    BCD输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N7I ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:7    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N8B ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:8    BCD输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N8I ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:8    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N9I ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:9    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

VK36N10I ---

工作电压/电流:2.2V-5.5V/7UA-3V3   感应通道数:10    I2C输出触摸积水仍可操作,抗电源及手机干扰  封装:SOP16/DFN16(超小超薄体积)

1-8

点高灵敏度液体水位检测IC——VK36W系列

VK36W1D  ---

工作电压/电流:2.2V-5.5V/10UA-3V3  1对1直接输出  水位检测通道:1

可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOT23-6

备注:1. 开漏输出低电平有效  2、适合需要抗干扰性好的产品应用

VK36W2D  ---

工作电压/电流:2.2V-5.5V/10UA-3V3  1对1直接输出  水位检测通道:2

可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP8

备注:1.  1对1直接输出   2、输出模式/输出电平可通过IO选择

VK36W4D  ---

工作电压/电流:2.2V-5.5V/10UA-3V3  1对1直接输出  水位检测通道:4

可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP16/DFN16

备注:1.  1对1直接输出   2、输出模式/输出电平可通过IO选择

VK36W6D  ---

工作电压/电流:2.2V-5.5V/10UA-3V3  1对1直接输出  水位检测通道:6

可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP16/DFN16

备注:1.  1对1直接输出    2、输出模式/输出电平可通过IO选择

VK36W8I  ---

工作电压/电流:2.2V-5.5V/10UA-3V3  I2C输出    水位检测通道:8

可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP16/DFN16

备注:1.  IIC+INT输出     2、输出模式/输出电平可通过IO选择

——————————————————————————

LCD/LED

液晶控制器及驱动器系列芯片简介如下:

RAM

映射LCD控制器和驱动器系列:

VK1024B  2.4V

~5.2V 

 6seg*4com  6*3   6*2       

     偏置电压1/2 1/3   S0P-16

VK1056B  2.4V

~5.2V   14seg*4com

14*3  14*2             偏置电压1/2 1/3   SOP-24/SSOP-24

VK1072B  2.4V

~5.2V   18seg*4com

18*3  18*2             偏置电压1/2 1/3  SOP-28

VK1072C  2.4V

~5.2V  18seg*4com  18*3  18*2 

           偏置电压1/21/3   SOP-28

VK1088B  2.4V

~5.2V  22seg*4com  22*3 

                偏置电压1/2 1/3   QFN-32L(4MM*4MM)

VK0192   2.4V

~5.2V  24seg*8com 

     偏置电压1/4      LQFP-44

VK0256   2.4V

~5.2V  32seg*8com 

     偏置电压1/4      QFP-64

VK0256B  2.4V

~5.2V  32seg*8com 

     偏置电压1/4       LQFP-64

VK0256C  2.4V

~5.2V  32seg*8com 

     偏置电压1/4      LQFP-52

VK1621 2.4V

~5.2V  32*4 32*3 32*2       偏置电压1/2 1/3   LQFP44/48/SSOP48/SKY28/DICE裸片

VK1622  2.7V

~5.5V   32seg*8com 

        偏置电压1/4 

   LQFP44/48/52/64/QFP64/DICE裸片

VK1623  2.4V

~5.2V   48seg*8com 

        偏置电压1/4 

   LQFP-100/QFP-100/DICE裸片

VK1625    2.4V

~5.2V  64seg*8com 

               偏置电压1/4    LQFP-100/QFP-100/DICE

VK1626    2.4V

~5.2V  48seg*16com 

              偏置电压1/5    LQFP-100/QFP-100/DICE

(

高品质 高性价比:液晶显示驱动IC 原厂直销 工程技术支持!)

高抗干扰LCD液晶控制器及驱动系列:

VK2C21A  2.4

~5.5V  20seg*4com 16*8 

        偏置电压1/3 1/4   I2C通讯接口SOP-28

VK2C21B  2.4

~5.5V  16seg*4com 12*8 

       偏置电压1/3 1/4   I2C通讯接口SOP-24

VK2C21C  2.4

~5.5V  12seg*4com 8*8 

        偏置电压1/3 1/4   I2C通讯接口SOP-20

VK2C21D  2.4

~5.5V  8seg*4com 

 4*8           偏置电压1/3 1/4   I2C通讯接口SOP-16

VK2C22A  2.4

~5.5V 44seg*4com    

           偏置电压1/2

1/3   I2C通讯接口LQFP-52

VK2C22B  2.4

~5.5V  40seg*4com 

              偏置电压1/2 1/3   I2C通讯接口LQFP-48

VK2C23A  2.4

~5.5V  56seg*4com 52*8 

       偏置电压1/3 1/4   I2C通讯接口LQFP-64

VK2C23B  2.4

~5.5V  36seg*8com 

              偏置电压1/31/4   I2C通讯接口LQFP-48

VK2C24   2.4

~5.5V  72seg*4com 68*8

60*16     偏置电压1/3 1/4 1/5   I2C通讯接口LQFP-80

[if !supportLineBreakNewLine]

[endif]

超低功耗LCD液晶控制器及驱动系列:

VKL060   2.5

~5.5V  15seg*4com 

          偏置电压1/2

1/3   I2C通讯接口SSOP-24

VKL128   2.5

~5.5V  32seg*4com 

          偏置电压1/2

1/3   I2C通讯接口LQFP-44

VKL144A  2.5

~5.5V  36seg*4com 

         偏置电压1/2 1/3   I2C通讯接口TSSOP-48

VKL144B  2.5

~5.5V  36seg*4com 

      偏置电压1/2 1/3   I2C通讯接口QFN48L (6MM*6MM)

静态显示LCD液晶控制器及驱动系列:

VKS118   2.4

~5.2V  118seg*2com 

         偏置电压 --    

  4线通讯接口LQFP-128

VKS232   2.4

~5.2V  116seg*2com 

         偏置电压1/1 1/2   4线通讯接口LQFP-128

永嘉微电/VINKA,工程服务技术支持,主营LCD/LED驱动IC/触摸IC

____________________________________________________________________

内存映射的LED控制器及驱动器:

VK1628 ---

通讯接口:STB/CLK/DIO   电源电压:5V(4.5~5.5V)    驱动点阵:70/52  共阴驱动:10段7位/13段4位  共阳驱动:7段10位   按键:10x2  封装SOP28

VK1629 ---

通讯接口:STB/CLK/DIN/DOUT   电源电压:5V(4.5~5.5V)    驱动点阵:128共阴驱动:16段8位   共阳驱动:8段16位   按键:8x4  封装QFP44

VK1629A ---

通讯接口:STB/CLK/DIO   电源电压:5V(4.5~5.5V)    驱动点阵:128共阴驱动:16段8位   共阳驱动:8段16位   按键:---  封装SOP32

VK1629B ---

通讯接口:STB/CLK/DIO   电源电压:5V(4.5~5.5V)    驱动点阵:112  共阴驱动:14段8位   共阳驱动:8段14位   按键:8x2  封装SOP32

VK1629C ---

通讯接口:STB/CLK/DIO   电源电压:5V(4.5~5.5V)    驱动点阵:120  共阴驱动:15段8位  共阳驱动:8段15位   按键:8x1  封装SOP32

VK1629D ---

通讯接口:STB/CLK/DIO   电源电压:5V(4.5~5.5V)    驱动点阵:96  共阴驱动:12段8位  共阳驱动:8段12位   按键:8x4  封装SOP32

VK1640 ---

通讯接口: CLK/DIN    电源电压:5V(4.5~5.5V)    驱动点阵:128共阴驱动:8段16位  共阳驱动:16段8位   按键:---  封装SOP28

VK1650 ---

通讯接口: SCL/SDA    电源电压:5V(3.0~5.5V)    驱动点阵:8x16共阴驱动:8段4位   共阳驱动:4段8位   按键:7x4  封装SOP16/DIP16

VK1668 ---

通讯接口:STB/CLK/DIO   电源电压:5V(4.5~5.5V)    驱动点阵:70/52共阴驱动:10段7位/13段4位  共阳驱动:7段10位   按键:10x2  封装SOP24

VK6932 ---

通讯接口:STB/CLK/DIN   电源电压:5V(4.5~5.5V)    驱动点阵:128共阴驱动:8段16位17.5/140mA  共阳驱动:16段8位   按键:---  封装SOP32

VK16K33 ---

通讯接口:SCL/SDA   电源电压:5V(4.5V~5.5V)   驱动点阵:128/96/64   共阴驱动:16段8位/12段8位/8段8位   共阳驱动:8段16位/8段12位/8段8位按键:13x3 10x3 8x3  封装SOP20/SOP24/SOP28

㈧ 谁有触控芯片BS8112A控制代码

转来的
#include "stm32f0xx.h"
void I2C_INT_Init()
{

GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);

EXTI_InitStructure.EXTI_Line=EXTI_Line5;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource5);
EXTI_Init(&EXTI_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=EXTI4_15_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority=2;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void I2C_SDACL_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10, GPIO_AF_4);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_4);

}

void ZLG_24C_Init(void)
{
I2C_InitTypeDef I2C_InitStructure;

I2C_INT_Init();

I2C_SDACL_Init();

RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);

I2C_InitStructure.I2C_Mode=I2C_Mode_I2C;
I2C_InitStructure.I2C_Ack=I2C_Ack_Enable;
//I2C_InitStructure.I2C_Ack=I2C_Ack_Disable;
I2C_InitStructure.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_DigitalFilter = 0x00;
I2C_InitStructure.I2C_OwnAddress1=0x00;
//I2C_InitStructure.I2C_Timing=0x30E32E44;
I2C_InitStructure.I2C_Timing=0x20D22E37;
I2C_InitStructure.I2C_AnalogFilter=I2C_AnalogFilter_Enable;

I2C_Init(I2C1,&I2C_InitStructure);
I2C_Cmd(I2C1,ENABLE);
// ZLG_24C_Read(0xA0,0x08);
}
uint8_t ZLG_24C_Read(uint8_t addr1, uint8_t addr2)
{
uint8_t data;
uint16_t i;
i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY) != RESET)
{
i++;
if(i>600) return 0;
}
I2C_TransferHandling(I2C1, addr1, 1, I2C_SoftEnd_Mode,I2C_Generate_Start_Write);
i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)
{
i++;
if(i>600) return 0;
}
I2C_Senddata(I2C1, addr2);
i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TC) == RESET)
{
i++;
if(i>600) return 0;
}
I2C_TransferHandling(I2C1, addr1, 1, I2C_AutoEnd_Mode, I2C_Generate_Start_Read);
i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_RXNE) == RESET)
{
i++;
if(i>600) return 0;
}
data=I2C_Receivedata(I2C1);
i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_STOPF) == RESET)
{
i++;
if(i>600) return 0;
}
i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_RXNE) != RESET)
{
i++;
if(i>600) return 0;
}
return(data);
}

void ZLG_24C_Write(uint8_t addr1,uint8_t addr2,uint8_t data)
{
uint16_t i;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY) != RESET);
I2C_TransferHandling(I2C1, addr1, 2, I2C_AutoEnd_Mode,I2C_Generate_Start_Write);

i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)
{
i++;
if(i>600) return;
}

I2C_Senddata(I2C1, addr2);

i=0;
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)
{
i++;
if(i>600) return;
}

I2C_Senddata(I2C1, data);
while(I2C_GetFlagStatus(I2C1,I2C_FLAG_STOPF) == RESET);

}
void EXTI4_15_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line5)!=RESET)
{
settableflag(Flag_getkey,0);
//riar=1;
}
EXTI_ClearITPendingBit(EXTI_Line5);
}

㈨ AT89s51模拟I2C主从机问题代码,求高手帮助

从机的代码没派丛纳有那么尘没简单的,从机要时刻监视SDA与SCL上的电平,还要判断电平变化时的时间间隔。
你可以先郑氏把主机的代码调好,再来调从机的代码。
调主机时,可以用24C01这些类似的芯片作为从机来调试。

㈩ 求解51单片机I2C对24c02读写汇编程序

ORG 0000H
LJMP MAIN

SCL BIT P2.1
SDA BIT P2.0
TEMP EQU 30H
BYTE_ADDR EQU 31H
;---------------I2C通讯程序----------------
;------------------------------------------
;---------------读取I2C数据----------------
;读取一个字节
;输入:BYTE_ADDR,读取字节地址
;输出:A
;------------------------------------------
I2CREAD:
LCALL I2C_START ;起始
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送芯片地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
LCALL I2C_START ;起始
MOV A,#0A1H
LCALL I2C_TXBYTE ;发送地址数据+读信号
LCALL I2C_RXACK ;接收ACK
LCALL I2C_RXBYTE ;接收数据
SETB C ;读一个字节C=1
LCALL I2C_TXACK ;发送NAK
LCALL I2C_STOP ;读取完成
RET
;----------------------------
;R4=读出字节数
;BYTE_ADDR=读出初始地址
;R1=数据指针
;----------------------------
I2C_PAGE_RD:
LCALL I2C_START ;起始
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送芯片地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
LCALL I2C_START ;起始
MOV A,#0A1H
LCALL I2C_TXBYTE ;发送地址数据+读信号
LCALL I2C_RXACK ;接收ACK
NXT_BYTE:
LCALL I2C_RXBYTE ;接收数据
MOV @R1,A
INC R1
CLR C ;连续读C=0
LCALL I2C_TXACK ;发送NAK
LCALL I2C_DELAY
DJNZ R4,NXT_BYTE
LCALL I2C_NOACK ;NOACK
LCALL I2C_STOP ;读取完成
RET
;----------------写一字节I2C数据------------
;写入一个字节
;输入:BYTE_ADDR,写入字节地址;A=写入数据
;输出:无
;------------------------------------------
I2CWRITE:
PUSH ACC
LCALL I2C_START ;开始写
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
POP ACC
LCALL I2C_TXBYTE ;写数据
LCALL I2C_RXACK ;接收ACK
LCALL I2C_STOP ;写完成
LCALL I2C_DLYMS ;延时1ms
RET
;----------------------------
;R4=写入字节数
;BYTE_ADDR=写入初始地址
;R1=数据指针
;----------------------------
I2C_PAGE_WR:
LCALL I2C_START ;开始写
MOV A,#0A0H
LCALL I2C_TXBYTE ;发送地址数据+写信号
LCALL I2C_RXACK ;接收ACK
MOV A,BYTE_ADDR
LCALL I2C_TXBYTE ;发送RAM地址数据
LCALL I2C_RXACK ;接收ACK
NEXT_DATA: ;WRITE 16 BYTES TO
MOV A,@R1 ;EEPROM
LCALL I2C_TXBYTE ;写数据
LCALL I2C_RXACK ;接收ACK
INC R1
DJNZ R4,NEXT_DATA
LCALL I2C_STOP ;写完成
LCALL I2C_DLYMS ;延时1ms
RET
;----------------------------
;发送I2C起始信号
;----------------------------
I2C_START:
SETB SCL ;时钟高电平时数据下降沿为启动信号
LCALL I2C_DELAY
SETB SDA
LCALL I2C_DELAY
CLR SDA ;数据线下降沿
LCALL I2C_DELAY ;延时
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
RET
;----------------------------
;发送I2C停止信号
;----------------------------
I2C_STOP:
CLR SDA
LCALL I2C_DELAY ;延时
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
SETB SDA ;数据线上升沿
LCALL I2C_DELAY ;延时
CLR SCL
RET
;----------------------------
;发送ACK/NAK信号
;----------------------------
I2C_TXACK:
MOV SDA,C ;送ACK数据
LCALL I2C_DELAY ;延时
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
SETB SDA ;发送完成
RET
;----------------------------
;接收ACK/NAK信号
;----------------------------
I2C_RXACK:
SETB SDA ;准备读数据
LCALL I2C_DELAY ;延时
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
MOV C,SDA ;读取ACK信号
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
RET
;----------------------------
I2C_NOACK:
SETB SDA ;NO ACKNOWLEDGE
LCALL I2C_DELAY
SETB SCL
LCALL I2C_DELAY
CLR SCL
LCALL I2C_DELAY
RET
;----------------------------
;发送一字节数据
;----------------------------
I2C_TXBYTE:
MOV R7,#8 ;8位计数
TXNEXT:
RLC A ;移出数据位
MOV SDA,C ;数据送数据口
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
DJNZ R7,TXNEXT ;送下一位
RET
;----------------------------
;接收一字节数据
;----------------------------
I2C_RXBYTE:
MOV R7,#8 ;8位计数
RXNEXT:
SETB SCL ;时钟->高
LCALL I2C_DELAY ;延时
MOV C,SDA
RLC A
CLR SCL ;时钟->低
LCALL I2C_DELAY ;延时
DJNZ R7,RXNEXT ;收下一位
RET
;----------------------------
I2C_DELAY: ;
NOP
NOP
RET ;
;----------------------------
I2C_DLYMS:
PUSH 0
PUSH 1
MOV R1,#2
I2CDL:
MOV R0,#248
DJNZ R0,$
DJNZ R1,I2CDL
POP 1
POP 0
RET
;----------------------------
MAIN:
MOV SP,#60H
MOV A,#0AAH
MOV BYTE_ADDR,#0
LCALL I2CWRITE
LCALL I2CREAD
MOV P1,A
SJMP $
END
;----------------------------

阅读全文

与i2c唤醒芯片代码相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接