历史上的今天
返回首页

历史上的今天

今天是:2025年03月18日(星期二)

正在发生

2019年03月18日 | s3c2440A操作24C08

2019-03-18 来源:eefocus

我这里实现的是非中断模式下的IIC操作


数据手册和代码对照着很容易看懂,尤其是数据手册上IIC那一章的几张程序流程图,一目了然。


下面是代码:


//这里没有用精确延时

void delay1()

{

int i = 0;

int j = 0;

 

for(i = 0; i < 100; i++)

{

for(j = 0; j < 100; j++);

}

}

/*************************************************************

Function name: IIC_Init

Description: Initialize IIC registers

Parameters: None

Returns: None

**************************************************************/

void IIC_Init()

{

//GPE14:IICSCL  GPE15:IICSDA

rGPECON = rGPECON & (~(0xf << 28)) | (0xa << 28);

//GPE14 GPE15 poll up function disabled

rGPEUP = 0xc000;

 

//rIICCON[7] = 1: enable IIC_bus acknowledge bit

//rIICCON[6] = 0: IICCLK = fPCLK / 16

//rIICCON[5] = 1: Tx/Rx interrupt enable

//rIICCON[3..0]: Tx clock = IICCLK/(IICCON[3:0]+1)

rIICCON = (1 << 7) | (0 << 6) | (1 << 5) | 0x0f;

//rIICSTAT[4] = 1: enable Rx/Tx

rIICSTAT = (1 << 4);

rIICADD = 0x10;

}

 

/*************************************************************

Function name: Write24C08_nbyte

Description: Write data to 24C08

Parameters: slave_addr: the address of IIC device, often set to "0xa0"

IIC_addr: exact data address

IIC_data: value of data

Returns: None

**************************************************************/

void Write24C08_nbyte(unsigned int slave_addr, unsigned int IIC_addr, unsigned char IIC_data)

{

  unsigned int i = 0;

unsigned int j = 0;

 

rIICDS = slave_addr;  //从设备地址

 

//rIICSTAT[7:6]:11--master Tx mode

//rIICSTAT[5]: 1--start signal

//rIICSTAT[4]: 1--enable Rx/Tx

rIICSTAT = 0xf0;  //开始写

 

while(!(rIICCON & 0x10));  //等待应答信号,该位为1,收到应答

 

rIICDS = IIC_addr; //向移位寄存器送数据:数据地址

for(i = 0; i < 10; i++);

rIICCON = 0xaf;

while(!(rIICCON & 0x10));

 


rIICDS = IIC_data;   //向移位寄存器送数据

rIICCON = 0xaf;   //rIICCON[4] = 0:清空挂起位

while(!(rIICCON & 0x10));

Uart_Printf("Send %d data %d to IIC\n", IIC_addr, IIC_data);

 

rIICSTAT = 0xd0; //rIICSTAT[5] = 0:STOP signal generation when write,停止信号

rIICCON = 0xaf; //清空挂起位

for(i = 0; i < 10; i++);

}

 

/*************************************************************

Function name: Read24C08_nbyte

Description: Read data from 24C08

Parameters: slave_addr: the address of IIC device, often set to "0xa0"

IIC_addr: exact data address

databuffer: used to storage data value

Returns: None

**************************************************************/

void Read24C08_nbyte(U32 slave_addr,U32 IIC_addr,U8 *databuffer)

{

        unsigned int i = 0;

unsigned int j = 0;

unsigned int add_in = IIC_addr;

        U32 temp = 0;

U32 tt = 0;

 

        rIICDS   = slave_addr;//0xa0

        rIICSTAT = 0xf0;    //开启IIC写功能,写IIC地址

while(!(rIICCON & 0x10));

 

        rIICDS   = (U8)add_in;   //数据具体地址

        for(i=0;i<10;i++);

        rIICCON  = 0xaf; //清空挂起标志位resumes IIC operation.

        while(!(rIICCON & 0x10));

 

rIICDS   = slave_addr;

        rIICSTAT = 0xb0;      //bit[7:6]:10--master Rx mode,master receive mode

        rIICCON  = 0xaf;

        while(!(rIICCON & 0x10));

        

temp = rIICDS;

 

      rIICCON  = 0x2f;

  for(i=0;i<10;i++);

while(!(rIICCON & 0x10));

 

    tt = rIICDS;

Uart_Printf("databuffer = 0x%x, %d  IIC_addr = %d, temp = %d\n", tt, tt, IIC_addr, temp);  

        rIICSTAT = 0x90;      //停止读

        rIICCON  = 0xaf;

        delay1();

}


推荐阅读

史海拾趣

FOCI Fiber Optic Communications Inc公司的发展小趣事

FOCI Fiber Optic Communications Inc.公司发展的五个故事

故事一:成立与初创期

FOCI Fiber Optic Communications Inc.(以下简称FOCI)成立于1995年,由台湾工业技术研究院(工研院)的核心团队创立。这家公司自诞生之初就专注于光纤互连技术的发展,致力于设计、制造和销售高性能的光纤组件和集成模块。初创时期,FOCI凭借其对光纤技术的深刻理解和市场需求的敏锐洞察,逐步在市场上站稳脚跟,成为光纤通信领域的一股新兴力量。

故事二:技术创新与突破

FOCI在发展过程中,始终将技术创新视为企业发展的核心驱动力。公司不断投入研发资源,在光纤耦合器、PLC分配器、薄膜粗波分复用/密集波分复用以及多光纤电缆组装模块等领域取得了多项技术突破。这些技术创新不仅提升了产品的性能和质量,还大幅降低了生产成本,使得FOCI的产品在市场上更具竞争力。

故事三:与奇景光电的战略合作

2024年,半导体解决方案无晶圆厂巨头奇景光电(Himax Technologies)宣布向FOCI投入5.22亿新台币(折合约为1610万美元)的资金。这次投资不仅是两家公司财务合作的结果,更是双方在技术融合与应用拓展上迈出的重要一步。根据合作协议,FOCI的共封装光学器件(CPO)与奇景光电的晶圆级光学器件(WLO)将被整合到多芯片模块中,这些模块将广泛应用于高性能计算、云服务器、人工智能等多个领域。

故事四:全球化布局与市场拓展

随着全球光纤通信市场的快速发展,FOCI积极实施全球化战略,不断拓展国际市场。公司通过参加国际展会、建立海外销售网络等方式,将高性能的光纤组件和集成模块带到了世界各地。特别是在光纤到户(FTTH)和云计算领域,FOCI的产品因其高效、低成本的特性而广受欢迎,成功在全球市场占据了一席之地。

故事五:子公司设立与多元化发展

为了进一步拓展业务领域和市场份额,FOCI在国内设立了多家子公司,如中山上诠通信科技有限公司等。这些子公司不仅继承了FOCI在光纤通信领域的深厚底蕴和技术优势,还根据当地市场需求进行了产品和服务的本地化调整。同时,FOCI还积极探索多元化发展路径,涉足光纤高速数据传输技术开发设计、研发和咨询等多个领域,为公司未来的持续发展奠定了坚实基础。

B.B. Battery公司的发展小趣事

随着科技的不断发展,电池行业也在经历着深刻的变革。B.B. Battery公司紧跟时代步伐,不断加大技术创新力度。他们引进先进的生产设备和技术,研发出更高效、更环保的电池产品。同时,公司还注重与高校、科研机构的合作,共同推动电池技术的创新与发展。这些努力使得B.B. Battery公司的产品在市场上具有更强的竞争力。

Benchmarq Microelectronics Inc公司的发展小趣事

Benchmarq Microelectronics Inc的创立源于几位工程师对半导体技术的深刻理解和市场需求的敏锐洞察。他们看到在快速发展的电子行业中,高性能、低功耗的半导体产品具有巨大的市场潜力。于是,他们决定共同创立Benchmarq Microelectronics Inc,致力于研发和生产先进的半导体产品。在创立初期,公司面临着资金短缺、技术挑战和市场竞争等多重困难。然而,通过团队的努力和合作,公司逐渐攻克了技术难关,推出了一系列受到市场欢迎的半导体产品,初步实现了盈利。

BULGIN公司的发展小趣事

随着技术的不断进步和市场的扩大,BULGIN公司在20世纪60年代成为了当时世界上最大的、产品线最为齐全的电子零件制造商之一。公司保持着快速的创新与发展,BULGIN品牌开始覆盖多国市场,为全球各地的客户提供优质的产品和服务。

Focus公司的发展小趣事

在数字化转型的大潮中,一家名为Focus的电子产品制造商(虚构)意识到传统制造模式的局限性,决定实施全面的数字化转型战略。公司首先引入了先进的ERP系统和智能制造技术,实现了生产流程的自动化和智能化。同时,为了快速扩大市场份额和增强技术实力,Focus积极寻求并购机会,先后收购了多家在物联网、人工智能等领域具有核心竞争力的初创企业。通过资源整合和优势互补,Focus迅速成长为行业内的领军企业。

Hirschmann公司的发展小趣事
当外部触发信号作用于TC4013时,定时器开始工作。同时,TC4066根据预设的数字信号状态来调整电路参数(如电阻、电容值),从而改变定时电路的延时时间或输出特性。最终,定时电路根据这些设置输出具有特定脉冲宽度或时间间隔的信号。

问答坊 | AI 解惑

请教有没实现过文件上传的

设备是在wince平台开发的,通过PC的浏览器可以访问。现在想通过浏览器向设备传送文件,应该有什么办法? ASP能否实现?…

查看全部问答>

wince里comman.bib里那么多冒号问题

comman.bib里为什么有那么多的冒号啊,屏蔽了那么多的东西,比如: ; @CESYSGEN IF FONTS_ARIALBD_1_08 ;    arialbd.ttf     $(_WINCEROOT)\\public\\common\\oak\\files\\arialbd_1_08.ttf     & ...…

查看全部问答>

2410+wince500 网卡问题

以太网初始化的发生reset错误,不知道什么原因,是从cs8900的lib文件中调用的函数 Initiating image download in 3 seconds. Starting auto-download ... memorybase:FLAG^_^CS8900: MAC Address: ff:31:4:0:ff:31 ERROR: Reset: Reset failed ...…

查看全部问答>

大家说说手上的板子来自何方呀

    论坛潜水很久啦,看高人如过江之鲫……     看到很多高手都要很多板子,羡慕哟,问下大家你们的板子都来自哪里呀     我手上只有一块51的开发板,淘宝上买的,寒酸哟,最近准备入手arm………

查看全部问答>

vxworks 驱动要怎么调试

我在搭建vxworks5.5 下的文件系统TFFS,现在MTD程序写完了我要怎么调试,tffsShow 这个函数调用通过了,下面怎么走 我使用usrtffsconfig(0,0,“/tffs0”) 出错? …

查看全部问答>

请教关于用lwip在lm3s9b96上面做服务器端不断开连接持续接受客户端发送的数据

参考academic的程序在9b96上面用lwip  raw api做成服务端,当客户端每次发送数据给服务器端时服务器端都会在接受数据后断开连接,代码参考academic的enet_tcp。 我将close_tcp()函数在App_sent()函数里面注释掉后,同时改变里面tcp_re ...…

查看全部问答>

大家帮我看一下这个运算电路

大家帮我看看这个电路啊,帮我分析一下作用,一级一级的,越详细越好,谢谢了,小弟愚钝,希望多多指教啊,谢谢你您们了…

查看全部问答>

大爱TI_M3与M4

最近想深入学习一下LM3S9B96或者LM4F232,就是官网带液晶那种,可以跑跑操作系统,进行cotex-M3的深入学习,不知道论坛坛友们有没有闲置的可以借用呀呵呵!!!不胜感激,嘿嘿!!!! [ 本帖最后由 鑫海宝贝 于 2012-5-22 14:57 编辑 ]…

查看全部问答>