历史上的今天
返回首页

历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2021年08月25日 | LPC1788的IIC使用

2021-08-25 来源:eefocus

#ifndef __IIC0_H_

#define __IIC0_H_

#include "common.h"

#include "delay.h"

//IIC通讯过程中的指定状态

#define STATUS_SENDSTART 0X08 //已经发送起始条件

#define STATUS_REPEATSTART 0X10 //已经发送重复的起始条件

#define STATUS_SENDSLAVE_ACK 0X18 //已发送从机写地址,接收到ACK

#define STATUS_SENDSLAVE_NACK 0X20 //已发送从机写地址,未接收到ack

#define STATUS_SENDDATA_ACK 0X28 //已发送从机写数据,并接收到ack

#define STATUS_SENDDATA_NACK 0X30 //已发送从机写数据没收到ack

#define STATUS_LOSS 0X38 //丢失总线仲裁

#define STATUS_READADDR_NACK 0X48 //已经发送从机读地址未收到ack

#define STATUS_READADDR_ACK 0X40 //已发送从机读地址并接受到ack

#define STATUS_RECV_ACK 0X50 //已接受数据字节ack已返回

#define STATUS_RECV_NACK 0X58 //已接受数据字节nack已返回

void iic0_init(u16 div);//参数为时钟分频数 不得超过65535 + 65535

u8 iic0_start(void);//发送起始信号

u8 iic0_send_write_addr(u8 addr);//发送设备写地址

u8 iic0_send_data(u8 data);//发送数据

u8 iic0_send_stop(void);//发送停止

u8 iic0_send_read_addr(u8 addr);//发送读地址

u8 iic0_read_data(u8* value,u8 ack);//读取数据

u8 iic0_repeat_start(void);//重新发送start

#endif

#include "iic0.h"

#define I2EN 6 //接口使能

#define STA 5 //起始标志

#define STO 4 //停止标志

#define SI 3 //中断标志

#define AA 2 //应答标志

#define I2ENC 6 //清除iic使能

#define STAC 5 //清除起始

#define SIC 3 //清除中断

#define AAC 2 //清除应答

#define STATE (LPC_I2C0->STAT & 0xf8) //IIC总线的实际状态信息

void iic0_init(u16 div)

{

//打开时钟,同时打开iic和gpio时钟

LPC_SC->PCONP |= (1<<15)|(1<<7);//打开时钟

//配置引脚功能

LPC_IOCON->P0_27 = 0x00;

LPC_IOCON->P0_27 |= (1<<0)|(1<<8);//打开iic功能,禁止滤波器 与引脚配置相关 根据实际引脚进行修改

LPC_IOCON->P0_28 = 0x00;//选择gpio功能,禁止迟滞 不反向 正常推挽

LPC_IOCON->P0_28 |= (1<<0)|(1<<8);//打开iic功能,禁止滤波器 与引脚配置相关 根据实际引脚进行修改

LPC_I2C0->CONCLR |= (1<LPC_I2C0->CONCLR |= (1<LPC_I2C0->SCLH = div/2;//设置IIC时钟

LPC_I2C0->SCLL = div/2;

LPC_I2C0->CONSET |= (1<}

//等待指定的状态

//失败返回1 成功返回0

static u8 WaitResponse(u8 response)

{

u8 retry = 200;

while(--retry)

{

DelayUs(1);

if(STATE == response)break;

}

if(retry)return 0;

else

{

iic0_send_stop();

return 1;

}

}

u8 iic0_start(void)//发送起始信号

{

LPC_I2C0->CONCLR = (1<//Start

LPC_I2C0->CONSET = (1<return WaitResponse(STATUS_SENDSTART);//等待起始条件发送成功

}

u8 iic0_send_write_addr(u8 addr) //发送设备写地址

{

//dev_addr

LPC_I2C0->DAT = addr;

LPC_I2C0->CONSET = (1<LPC_I2C0->CONCLR = (1<return WaitResponse(STATUS_SENDSLAVE_ACK);//等待设备ack

}

u8 iic0_send_data(u8 data) //发送数据

{

LPC_I2C0->DAT = data;

LPC_I2C0->CONSET = (1<LPC_I2C0->CONCLR = (1<return WaitResponse(STATUS_SENDDATA_ACK);

}

u8 iic0_send_stop(void) //发送停止

{

LPC_I2C0->CONCLR = (1<LPC_I2C0->CONSET = (1<LPC_I2C0->CONCLR = (1<return 0;

}

u8 iic0_send_read_addr(u8 addr) //发送读地址

{

LPC_I2C0->DAT = addr;

LPC_I2C0->CONSET = (1<LPC_I2C0->CONCLR = (1<return WaitResponse(STATUS_READADDR_ACK);

}

u8 iic0_read_data(u8* value,u8 ack) //读取数据 1发送ack 0不发送

{

if(ack)

{

LPC_I2C0->CONSET = (1<LPC_I2C0->CONCLR = (1<if( WaitResponse(STATUS_RECV_ACK))return 1;

}

else

{

LPC_I2C0->CONCLR = (1<if(WaitResponse(STATUS_RECV_NACK))return 1;

}

*value = LPC_I2C0->DAT;

return 0;

}

u8 iic0_repeat_start(void) //重新发送start

{

LPC_I2C0->CONCLR = (1<LPC_I2C0->CONSET = (1<return WaitResponse(STATUS_REPEATSTART);//等待重复start成功

}


推荐阅读

史海拾趣

Hirose Electric公司的发展小趣事

Hirose Electric公司电子行业的五个发展故事

1. 连接器技术的创新与多样化

Hirose Electric自创立以来,便以连接器技术的不断创新而著称。在过去的70多年里,该公司不断推出适应市场需求的连接器产品,从最初的简单连接器发展到如今涵盖工业、通讯、消费类电子、电脑及汽车等多个领域的复杂连接器解决方案。例如,Hirose开发了多种类型的RF、同轴、板对板、线对板、圆形、MicroUSB、FPC/FFC等连接器,这些产品不仅提升了设备的连接性能,还满足了市场对高质量、高效率连接方案的需求。

2. 全球化战略与市场拓展

为了更好地服务全球客户,Hirose Electric实施了积极的全球化战略。公司在全球范围内建立了多个生产基地和销售网络,包括在中国上海、深圳和北京设立的分支机构,以及在其他国家和地区的代表处。这些机构的设立不仅缩短了与客户之间的距离,还提升了供应链的灵活性和响应速度。例如,Hirose通过在中国市场的深耕,不仅扩大了其在中国市场的份额,还为中国电子行业的发展提供了有力支持。

3. 环保型连接器的研发与推广

随着全球对环境保护意识的增强,Hirose Electric也积极投身于环保型连接器的研发与推广中。公司致力于生产同轴连接器、FFC/FPC连接器以及单排和双排等环保型连接器,这些产品在满足性能要求的同时,还减少了生产过程中的环境污染。Hirose通过采用先进的生产工艺和材料,确保连接器的制造过程符合环保标准,赢得了业界的广泛赞誉。

4. 与分销商的紧密合作

Hirose Electric深知与分销商合作的重要性,因此与全球多家知名分销商建立了长期稳定的合作关系。这些分销商不仅为Hirose的产品提供了广泛的销售渠道,还通过提供专业的技术支持和客户服务,帮助Hirose更好地满足客户需求。例如,贸泽电子作为Hirose的重要分销商之一,凭借其强大的供应链能力和专业的技术团队,为Hirose的产品在全球范围内的推广和销售提供了有力支持。

5. 产品系列的持续升级与扩展

为了保持市场竞争力,Hirose Electric不断对其产品系列进行升级和扩展。例如,公司近期将DF40系列连接器的高度范围从4毫米扩展到7毫米,以满足不同产品设计对连接器高度的需求。这一升级不仅提升了DF40系列连接器的灵活性,还进一步巩固了Hirose在连接器市场的领先地位。此外,Hirose还不断推出新的连接器产品,如TF07V系列FPC/FFC连接器,这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。

Hittite Microwave(ADI)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,其发展历程涵盖了从模拟频道增补器到数字卫星、地面及有线电视机顶盒的广泛范畴。而从狭义角度看,机顶盒特指那些具备数字处理能力的设备,如IPTV机顶盒、DVB-S卫星机顶盒、DVB-T地面机顶盒及DVB-C有线电视机顶盒等。

机顶盒的核心功能在于接收并转换数字电视信号,使之能在传统或智能电视上播放。它不仅能接收来自有线电缆、卫星天线及宽带网络的信号,还能提供电子节目指南、网页浏览等增值服务。通过机顶盒,用户能够享受到高清乃至4K超高清的电视节目,体验更为细腻的画面和震撼的音效。此外,机顶盒还具备网络交互能力,支持在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为智能互动终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化方向发展。未来,机顶盒将不仅限于基本的信号接收与解码功能,还将融入更多智能推荐、语音识别等先进技术,为用户提供更加个性化、便捷的娱乐体验。总之,机顶盒作为连接电视与互联网的桥梁,正以其丰富的功能和广泛的应用场景,不断满足用户日益增长的娱乐需求。

CHERRY公司的发展小趣事

90年代初,薄膜键盘凭借其低廉的价格和轻便的特性迅速占据了市场主导地位,机械键盘一度被边缘化。然而,Cherry并未放弃机械键盘业务,而是不断进行技术创新和产品升级。随着电竞行业的兴起和消费者对高品质输入设备的需求不断增加,机械键盘市场逐渐复苏。Cherry凭借其深厚的技术积累和品牌优势,成功抓住了这一市场机遇,实现了机械键盘业务的复兴。

安美通(APPCON)公司的发展小趣事

安美通非常重视企业文化建设和团队建设。公司倡导创新、务实、合作的企业文化,为员工提供了一个宽松、自由、充满激情的工作环境。同时,公司还积极开展各类培训活动,提升员工的专业素养和综合能力。这些措施使得安美通的团队更加团结、高效,为公司的持续发展提供了有力的保障。

这五个故事虽然只是安美通发展过程中的一部分,但它们充分展示了安美通在电子行业中不断努力、创新、拓展的精神和成果。未来,安美通将继续秉承这种精神,不断推动公司的发展和进步。

Display Elektronik GmbH公司的发展小趣事

面对数字化浪潮的冲击,Display Elektronik GmbH积极拥抱数字化转型。公司利用大数据、云计算等先进技术,实现了生产、销售、服务等各个环节的数字化管理。这种数字化转型不仅提高了公司的运营效率和管理水平,还为客户提供了更加便捷、高效的服务体验。在数字化转型的推动下,Display Elektronik GmbH的竞争力得到了显著提升。

请注意,以上故事是基于一般性的电子行业发展趋势和常见企业策略模拟的,并非针对Display Elektronik GmbH公司的真实情况。

Alliance Fiber Optics Products Inc公司的发展小趣事

随着产品质量的不断提升和市场需求的扩大,AFOP开始积极拓展国内外市场。公司通过与各大电信运营商、设备制造商等建立合作关系,将产品应用于长途通信、大都会网络以及最后一里接入等领域。同时,AFOP还积极参与国际光纤通信展览会等活动,加强与国际同行的交流与合作,提升了公司在国际市场的知名度。

问答坊 | AI 解惑

电子万年历我成功调试过

http://blog.163.com/li_j920/edit/ 还的硬件电路,你们要我会给你们的。…

查看全部问答>

机动车尾号限行提示器

机动车尾号限行提示器…

查看全部问答>

WinCE中如何调用ARM汇编指令?

RT,我在做GBA模拟器,想直接调用ARM汇编指令,利用ARM9模拟ARM7-TDMI,但是如果可以直接调用ARM汇编指令模拟就很简单了,请问需要什么平台和设备?因为主要是在Windows Mobile上面用,所以希望能简单一点的…

查看全部问答>

请教 关于上层过滤器驱动程序的问题

请问如何在上层过滤驱动实现指定的IRP拦截,比如,禁止C:\\helloworld.exe以外的一切程序写G:\\盘? 我现在用DriverStudio生成了一个upper filter,那么应该如何修改代码呢?…

查看全部问答>

想找个师傅带一下【上海,武汉均可】

要毕业了没有工作经验,想找一个师傅教一下。毕业课题是无线点菜机,辅导我做一下。…

查看全部问答>

求助:MSP430执行_EINT()命令进入中断函数

大家好,我用的MSP430F5X系列的芯片。在IAR中执行EINT()命令时,这应该是CPU寄存器打开全局中断,为什么我单步运行的时候走到这里后会进入中段函数?  困惑了多日了,望各位大侠们能帮帮我。不甚感激。。。…

查看全部问答>

51系列单片机驱动彩色液晶显示模块

51系列单片机驱动彩色液晶显示模块 关键字:51系列单片机,驱动,彩色液晶,显示,模块 其核心电路均采用大规模可编程逻辑器件设计,全硬件实现,性能稳定可靠,产品一致性好。采用简单的并行总线方式与51 单片机、AVR、DSP、PIC、ARM等CPU 直接 ...…

查看全部问答>

DSP应用系统设计

我帮老师扫描的第三本书…

查看全部问答>