一.前言
stm8是一款低功耗的MCU芯片,它具备stm32库函数和资源丰富的优势。也同时具有价格便宜,低功耗的特点。在一些项目中,能起到很好的作用。下面我介绍一下stm8的IIC硬件库函数驱动代码及实现。
二.IIC基本操作
iic基本操作分为读操作和写操作,这两个操作就可以对设备进行一些基本的操作了。还要知道设备的地址就ok了,具体的IIC时序大家可以上网看看。
三.实现代码
1.先要启动IIC的时钟,保证可以正常工作。 CLK_PeripheralClockConfig (CLK_Peripheral_I2C1,ENABLE);//开启IIC1时钟
2.再对IIC进行初始化的操作
void Init(void)
{
I2C_DeInit();
I2C_Init(I2C_Speed, 0x88, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);
I2C_Cmd(ENABLE);
}
可以用来对IIC的通信时间和主机地址以及从机地址等参数进行设置。IICSPEED最好不要超过400K,会造成通信的不稳定,最好在100K左右就可以了,host_address是主机的地址,可以自己设定。
3.IIC的写操作
/****************************************************************************
* 名称:I2C_WriteByte(uint8_t addr,uint8_t data)
* 功能:进行IIC的写操作。
* 入口参数: uint8_t addr 寄存器的地址
* uint8_t data 写入的数据
* 出口参数:无
* 说明:对触摸屏的寄存器进行写入操作,变量都是16进制
****************************************************************************/
void I2C_WriteByte(uint8_t addr,uint8_t data)
{
while(I2C_GetFlagStatus( I2C_FLAG_BUSBUSY));
I2C_GenerateSTART( ENABLE);//开启I2C1
while(!I2C_CheckEvent( I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/
I2C_Send7bitAddress( I2C1_WRITE_ADDRESS7, I2C_DIRECTION_TX );//器件地址 -- 默认0xD0
while(!I2C_CheckEvent( I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData( addr);//寄存器地址
while (!I2C_CheckEvent( I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_SendData( data);//发送数据
while (!I2C_CheckEvent( I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_AcknowledgeConfig(ENABLE);
I2C_GenerateSTOP( ENABLE);//关闭I2C1总线
}
上面的代码是IIC的写函数,可以对设备的寄存器进行写操作。I2C1_WRITE_ADDRESS7代表设备IIC的写入地址,根据器件地址的不同改变就可以。每一步都是调用的IIC的库函数,如果进行单步调试,地址寄存器都对的话,就可以看见每操作一步从机都会有一个应答信号。
4.IIC的读操作
uint8_t I2C_ReadByte(uint8_t addr)
{
uint8_t i;
while(I2C_GetFlagStatus( I2C_FLAG_BUSBUSY));
I2C_GenerateSTART( ENABLE);//开启I2C1
while(!I2C_CheckEvent( I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/
I2C_Send7bitAddress( I2C1_WRITE_ADDRESS7, I2C_DIRECTION_TX );//器件地址 -- 默认0xD0
while(!I2C_CheckEvent( I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
I2C_SendData( addr);//寄存器地址
while (!I2C_CheckEvent( I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_GenerateSTART( ENABLE);//开启I2C1
while(!I2C_CheckEvent( I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/
I2C_Send7bitAddress( I2C1_READ_ADDRESS7, I2C_DIRECTION_RX );//器件地址 -- 默认0xD1
while(!I2C_CheckEvent( I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_RECEIVED));
i=I2C_ReceiveData();//读取数据
I2C_AcknowledgeConfig(DISABLE);
I2C_GenerateSTOP( ENABLE);//关闭I2C1总线
return i;
}
IIC的读操作,跟写操作不同的是.读操作首先要先进行写操作,写一下要读的寄存器地址,当然地址也要发送写入的地址。然后再写入器件读取地址,要读取的寄存器地址,把数据读取出来。I2C1_READ_ADDRESS7为器件的读取地址,写操作和读操作两个操作的应答变量也不一样,这个要注意一下。
四.总结
硬件IIC的库函数实现通信,代码实现量小,调通以后的稳定性高,速度快。缺点是可能会占一部分内存空间,调试不方便,因为都是用的库函数,不容易找问题。
上一篇:STM8S103之GPIO
下一篇:stm8s105调试I2C记录
推荐阅读
史海拾趣
由于电子行业中Broadband公司的发展故事可能涉及众多细节和具体数据,且这些故事往往与公司的战略决策、市场环境、技术创新等多方面因素紧密相关,因此,我无法直接为您虚构或编造五个具体的发展故事。不过,我可以为您提供一种可能的框架或思路,帮助您了解如何构建这样的故事。
在构建Broadband公司的发展故事时,您可以考虑以下几个方面:
-
公司背景与初创阶段:描述公司的成立背景,包括创始人、初始资金、技术基础等。讲述公司如何抓住市场机遇,推出首款产品或服务,并在早期市场中获得一定的份额。
-
技术创新与产品升级:描述公司在发展过程中如何通过技术创新不断提升产品性能和服务质量。可以提及公司在研发方面的投入、取得的专利成果,以及这些创新如何转化为市场竞争力。
-
市场拓展与合作:讲述公司如何逐步扩大市场份额,包括进入新的地区市场、拓展应用领域等。同时,可以提及公司与其他企业或机构的合作,如产业链上下游的整合、战略合作等。
-
应对市场挑战与竞争:分析公司在发展过程中遇到的市场挑战和竞争压力,如竞争对手的崛起、政策调整等。描述公司如何调整战略、优化运营,以应对这些挑战。
-
未来展望与战略规划:基于当前的市场环境和公司实力,展望公司的未来发展前景,包括可能的市场趋势、技术方向等。同时,描述公司的战略规划,如扩大产能、拓展新业务领域等。
在构建这些故事时,请确保基于事实进行描述,避免夸大或缩小事实。您可以查阅相关公司的官方资料、行业报告、新闻报道等,以获取准确的信息和数据。同时,注意保持故事的连贯性和逻辑性,使读者能够清晰地了解公司的发展历程和现状。
希望这个框架能够帮助您构建出符合要求的Broadband公司的发展故事。如果您需要更具体的帮助或建议,请随时告知。
在电子行业中,Hitachi(日立)及其子公司如Renesas(瑞萨电子,原日立半导体部门独立后成立)的发展历史充满了技术创新、市场扩张与全球合作的精彩故事。以下是五个相关故事,每个故事均基于事实描述:
1. 从电机制造到半导体巨头的转型
日立公司成立于1910年,最初以生产电动机和矿山设备起家,旨在支持日本的工业化进程。随着技术的不断进步和市场需求的多样化,日立逐渐将业务扩展到电子领域。1960年代,日立开始涉足半导体技术,并在随后的几十年里,通过持续的研发投入和技术创新,逐步建立了在半导体行业的领先地位。1999年,日立半导体部门独立成为Renesas Technology Corporation(瑞萨科技),进一步专注于微控制器、模拟IC、电源管理IC等产品的研发与生产,为汽车电子、工业控制、消费电子等多个领域提供关键解决方案。
2. 全球化战略与市场拓展
进入21世纪,日立及Renesas积极实施全球化战略,通过在全球各地设立研发中心、生产基地和销售网络,加速其产品和技术的国际化进程。例如,Renesas在美国、欧洲和亚洲等地建立了多个研发中心,与当地企业和研究机构紧密合作,共同推动半导体技术的创新与发展。同时,通过并购和合作,Renesas不断扩展其产品线,提升在全球市场的竞争力。
3. 技术创新引领行业发展
日立及Renesas在半导体领域的技术创新是其持续发展的重要驱动力。多年来,公司投入大量资源进行研发,不断推出具有行业影响力的新产品和技术。例如,在汽车电子领域,Renesas的MCU(微控制器)和功率半导体产品广泛应用于发动机控制、车身控制、安全系统等关键系统,为汽车行业的智能化和电动化转型提供了重要支持。此外,Renesas还在物联网、工业4.0等新兴领域积极布局,推动相关技术的研发与应用。
4. 应对挑战与危机管理
在发展过程中,日立及Renesas也面临过诸多挑战和危机。例如,2011年日本东北太平洋地区地震和海啸对日立及Renesas的生产基地造成了严重影响。面对这一突如其来的灾难,公司迅速启动应急响应机制,调整生产计划,确保关键产品的供应不受影响。同时,公司还加强了供应链的多元化和风险管理,以应对未来可能发生的类似危机。
5. 可持续发展与社会责任
作为一家全球性的电子企业,日立及Renesas始终将可持续发展和社会责任视为企业发展的重要组成部分。公司致力于开发环保型产品和解决方案,推动绿色能源和节能减排技术的应用。同时,公司还积极参与社会公益活动,支持教育、环保和社区发展项目,展现了作为全球企业公民的责任感。例如,日立通过引入“光伏+储能”智慧能源体系,构建绿色生产基地,为实现“双碳”目标贡献力量。
以上五个故事展示了Hitachi(日立)及其子公司Renesas在电子行业中的发展历程和成就,体现了公司在技术创新、市场拓展、危机管理、可持续发展和社会责任等方面的努力和贡献。
随着公司业务的不断发展,Crameda Intersys公司开始寻求与行业内其他企业的战略合作。公司通过与多家知名企业建立紧密的合作关系,共同研发和推广新技术产品,成功将业务扩展到全球市场。这些战略合作不仅拓宽了公司的市场渠道,也提升了公司的品牌影响力和市场竞争力。同时,通过与合作伙伴的深入交流和学习,公司不断吸收新的技术和理念,为自身的创新和发展注入了新的活力。
APLUS Products公司起源于XXXX年,当时电子行业正处于飞速发展的黄金时期。公司创始人凭借对电子技术的深厚理解和市场需求的敏锐洞察,决定专注于研发和生产高质量的电子产品。初期,公司面临着资金短缺、技术难题和市场竞争等多重挑战。然而,通过不断的技术创新和产品优化,APLUS逐渐在市场中崭露头角。
作为欧洲最领先的生产商之一,EMS GmbH公司与各大国际整车厂建立了长期稳定的合作关系。这些合作不仅为公司带来了稳定的订单和收入来源,还使EMS GmbH能够深入了解市场需求和技术趋势,从而不断优化产品和服务。通过与国际整车厂的紧密合作,EMS GmbH公司在汽车转换器注塑件领域赢得了良好的口碑和声誉。
并购:2011年,全球领先的信号传输解决方案提供商Belden成功收购了GarrettCom。这一并购标志着GarrettCom正式成为Belden大家庭的一员,也为其带来了更广阔的发展空间和资源支持。
融合:加入Belden后,GarrettCom继续发挥其在工业通信领域的专长,并与Belden的其他业务线形成协同效应。双方共同为客户提供更全面的信号传输和通信解决方案,进一步提升了市场竞争力。
随着直接中频采样的更高分辨力数据转换器的上市,系统设计师必须对低抖动时钟电路做出有助于性能与成本折衷的抉择。制造商用来规定时钟抖动的很多传统方法并不适用于数据转换器,或者说,充其量也只能反映问题的一部分。如果对时钟电路的规范和设计 ...… 查看全部问答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 有人总结出来的报告,这是一个模板的例子 后面都有另外加的说明 如果对于论文报告没有什么想法的可以参考参考 … 查看全部问答∨ |
|
手机遥控家中电器,未尝不可—LED光学无线网络 。以下信息即是答案: 近日,波士顿工程大学对 LED 进行了深入研究发现, LED 不仅是未来的照明系统必备组件,而且也将成为下一代无线网络的骨干。 该大学教授 Thomas Little 声称, ...… 查看全部问答∨ |
grub-0.97 文件写操作函数的实现(grub_write) 各位好: 最近在 x86下进行单板引导的开发,在此过程中 遇到了一点问题 希望与大家共同探讨一下; 1 单板上电后 首先读取 单板上EEPROM中存储的启动信息; 2 使用grub-0.97 的grub_read 函数读配置 ...… 查看全部问答∨ |
我有个用visual2005写的应用程序(ZJY.EXE),它运行后是一个界面,会有几个按钮和几个选择框,比如第一个按钮,对应的前面会有个选择框,选择后,里面会显示个对勾 首先,没有旋转屏幕的时候我运行ZJY.EXE,界面显示很漂亮,比如,对勾是浅绿色的,按钮也很有 ...… 查看全部问答∨ |