历史上的今天
今天是:2024年09月27日(星期五)
2021年09月27日 | 使用STM8L的硬件I2C(四)硬件I2C的使用注意
2021-09-27 来源:eefocus
其他系列文章请参见:
(一)硬件I2C的简介
(二)硬件I2C的事件和检测
(三)硬件I2C中断读写(流程及代码)
使用STM8L的硬件I2C时,有几个点要注意:
I2C的初始化
时钟的使能操作必须在其他I2C设置之前,否则设置不生效
CLK_PeripheralClockConfig(CLK_Peripheral_I2C1, ENABLE);
Slave地址的设置
这一点让人困扰,花了不少时间才搞清楚。
是因为标准库函数I2C_Send7bitAddress()并不会帮助你左移。
这个左移动作必须由用户完成,如下:
I2C_Send7bitAddress(I2C1, _i2c_dev.addr << 1, I2C_Direction_Transmitter);实现并不会帮助左移
Read流程的关闭
因为使用硬件I2C,处理速度较快。要预先在下一数据接收前完成Nack和Stop设置。
中断和Polling模式都要处理,特别是中断必须处理。中断模式下可以如下操作:
EV5:送Slave地址(Read)
EV6:如果仅需读取字节数n=1,则直接关Ack并发送Stop,n>=2,则不做动作
EV7:先读数据,然后判断剩余字节n,如果n=1,则关Ack并发送Stop,如n=0,则关中断
其实本质就是必须要提前1个字节做好准备动作(清Ack、开Stop)。
超时处理
要是地址错误或者其他总线错误会导致总线挂起停止响应,所以应用层上最好做超时处理。
I2C_IT_ERR和SR2处理
开启了I2C_IT_ERR中断时,SR2中会存储错误码供处理。
最简单的处理就是将SR2清楚,重置为0。
史海拾趣
|
看到坛子里很多人拿到板子后不知道第一步该如何做, 在网上看到一个朋友的博客,感觉还不错,对于购买板子的朋友应该有所帮助,所以呈现出来: 来源:http://adreaman.com/0524arm-mini2440-led-key-non-os.html mini2440是当前最经济的arm9开 ...… 查看全部问答> |
|
本文为转帖,觉得对大家有用,就转到坛子了:)功率器件的牌子很多,以MOSFET为例,有飞兆,IR ,ST ,ON,英飞凌,TOSHIBA的世界各大牌子,如何花更少的钱买到最好的东西,是我们采购也好,工程师也罢是我们追求的目标,这样才会老板满意,客户满意 ...… 查看全部问答> |
|
目录: 第1章 EZ-USB简介 1.1 介绍 1.2 EZ-USB结构框图 1.3 USB规格说明 1.4 令牌和PID 1.5 主机是控制器 1.6 USB的传输方向 1.7 帧 1.8 EZ-USB的传输类型 1.9 枚举 l.10 USB内核 1.11 EZ-USB微处理器 l.12 重校举 ...… 查看全部问答> |
|
Keil uv3快速入门 demo https://bbs.eeworld.com.cn/thread-98020-1-1.html… 查看全部问答> |
|
(重分答谢)AT 命令 STATE: IP IND(连线失败,接受场景配置) 我再WinCE5.0上用GPRS上网发信息到服务器上: AT+CREG? // check if registration network in 2 seconds interval +CREG: 0,1 // module responses AT+CGATT? // check if attach PDU for 2 seconds interval +CGATT: 1 // module response ...… 查看全部问答> |
|
windows mobile上的数据拷贝(类似于PC的GHOST软件) 各位高手,最近小弟遇到一个问题,如何在windows mobile下实现类似于PC中GHOST软件,即读取ROM中的所有内容. 本人尝试过几种方法:(平台是VS2005 + Windows Mobile 5.0 Smartphone SDK) 1.在PC桌面端开发应用程序,用RAPI读取手机数据,其中用到了CeC ...… 查看全部问答> |
|
芯片是cc2430 运行环境是IAR 片外寄存器的0x0000-0xDF00是程序存储器, 在程序存储器的某个地址定义了一个字节的数据, #define DATA1 ((volatile xdata*)0x0010) = 0x0F 可是读这个地址的数据时,出现了问题 我读DATA1 的值为0x0F,但读地 ...… 查看全部问答> |
|
1.开启电压VT ·开启电压(又称阈值电压):使得源极S和漏极D之间开始形成导电沟道所需的栅极电压; ·标准的N沟道MOS管,VT约为3~6V; ·通过工艺上的改进,可以使MOS管的VT值降到2~3V。 2. 直流输入电阻RGS ·即 ...… 查看全部问答> |




