关于IIC总线的算法:
有的单片机中有专用的IIC接口,有的没有专用接口我们一般使用模拟IIC来实现;
想请教:专用接口和模拟接口控制的IIC有啥优缺点?
是不是专用接口就好与模拟接口?
1.如果单片机内部集成IIC硬件模块的,只要不存在太大的Bug,建议选择使用硬件IIC,也就是你说的专用的IIC接口。硬件IIC大大解放了CPU的工作压力。而软件IIC则是一直占有CPU资源的。
2.当然如果单片机内部不集成硬件IIC接口的,只能选择软件IIC来模拟驱动了。
这种东西没有谁比谁好这种说法,只是各自的应用场合不同罢了,各有各的优点和缺点。
比如51单片机没有硬件IIC接口只能用模拟IIC,像stm32f1的硬件IIC听说有BUG,但是我们自己品尝做一些小玩意是没什么问题的,硬件IIC的通信速率是高于模拟IIC(通过延时来确保时序正确)的,具体IIC是用模拟的还是硬件的还需要视具体情况而定
模拟的适用更广,随便找两个 GPIO 就可以当作 IIC 总线。但是需要 cpu 产生延时,精准的控制时许,这个时候 cpu 就不能干其他的了。
专有接口是硬件IIC控制器,只有集成了 IIC 控制器的 单片机才可以,使用前配置好它自己产生时许不要cpu国多参与。可以看作是和 cpu 并行的。
专用接口相对好一点,因为可以节省CPU的资源;而且对于延时你不用考虑。
模拟I2C的好处是对于I2C硬件接口不用了解,只要按照时序来就行。
专用接口就是硬件I2C吧,这个挺好用的,就是用不来的人觉得有BUG,
软件I2C基本没啥问题,因为软件I2C移植性比较强不容易出错
I2C专用硬件接口比较好,好控制,配置好后,数据收发比较简单;
软件模拟的,移植性好。
I2C和模拟接口都有各自的优点,
建议用专用接口
专用的硬件I2C不占用过多的控制器资源,像软件模拟,你得算好延时,这个麻烦而且占资源。
软件I2C是因为之前没有硬件I2C才想出的办法,当然,软件I2C移植性好,稍微改改延时,在其他芯片上就基本能用。
专用接口不占cpu内存,模拟i2c需要用到cpu资源