历史上的今天
今天是:2025年05月11日(星期日)
2019年05月11日 | 89和12单片机的I2C通信时序问题
2019-05-11 来源:eefocus
今天用ADC偶然发现了这个问题,分享给各位朋友。
89的I2CDelay:
#define I2CDelay() {_nop_();_nop_();_nop_();_nop_();}
12的I2CDelay:
void Delay_us(unsigned char us)
{
do {
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
} while (--us);
}
I2CDelay(5);
I2C通信分为低速模式100kbit/s、快速模式400kbit/s和高速模式3.4Mbit/s。因为所有的I2C器件都支持低速,但却未必支持另外两种速度,所以作为通用的I2C程序我们选择100k这个速率来实现,也就是说实际程序产生的时序必须小于等于100k的时序参数,很明显也就是要求SCL的高低电平持续时间都不短于5us,因此我们在时序函数中通过插入I2CDelay()这个总线延时函数(它实际上就是4个NOP指令,用define在文件开头做了定义),加上改变SCL值语句本身占用的至少一个周期,来达到这个速度限制。
89的例程用到是11.0592M的晶振。
12/11059200肯定比12M晶振的1us机器周期大,所以89的延时是大于4的,再加上语句执行的时间肯定是大于5us的
上一篇:STC12单片机实现自动下载程序
史海拾趣
|
5月9日也算是忙碌的一天了,早上起床晚了,7点50才起, 刚出宿舍就下起雨了,吃了早餐直奔实验室,又搞了一个调频无线话筒,不过只有几米这样子, 又有一个学校的比赛,题目卡了下我们组选的是LED点阵屏的,学习了VC对话框加法点击,看的是孙鑫的视 ...… 查看全部问答> |
|
VS2005中开发PocketPC环境,工具箱中没有任何控件 前些天用VS2005做PocketPC的开发,开发IDE界面上工具箱中有许多控件,像按钮,文本框什么的,但是昨天安装有卸载VS2007后,发现VS2005中的PockePC开发环境中的工具箱上没有任何控件了(但WinForm中的还都在),无法通过图形界面添加按钮到代码窗体上,我又把 ...… 查看全部问答> |
|
有些指令长度超过cpu字长,cpu怎么来处理这些指令呢? 对某一cpu,操作码的指令长度是固定,而整个指令长度不同主要是由操作数个数 引起,但一个操作数其指令长度是固定的,但操作码长度或操作数长度不一定等 于cpu字长?… 查看全部问答> |
|
很多朋友问,怎么学习模拟电路,我得回答是:看模拟电路的书籍。朋友说,这样说太笼统了,让我仔细说一说。其实我也不知道从何说起。就把我认为该掌握的一些要点列举一下,仅共参考,如有不妥之处,敬请批评指正。1.掌握二极管,三极管,场效应的特 ...… 查看全部问答> |
|
此车载DVD导航方案平台采用TI强大的双核处理器DM8148,具备A8核与DSP核,图像编解码核,图像采集与显示核,3D加速协处理器1. A8核,运行android系统,主要功能是多媒体,如音视频播放,导航,收音机,蓝牙,LCD触摸,WIFI,GPS,3G。支持串口,CAN ...… 查看全部问答> |
|
EEWORLD大学堂----2013 Altera SoC合作伙伴研讨会 2013 Altera SoC合作伙伴研讨会:https://training.eeworld.com.cn/course/20712013 Altera SoC合作伙伴研讨会… 查看全部问答> |




