单片机没有SDA怎么办?

火星论


遇到这种情况,你恐怕不能使用单片区内部的硬件spi接口,你可以使用单片机,根据I2C通讯协议进行IO口模拟通信。

I2C通信是两线:SCL,SDA。

SPI通常是4线:CS,SCK,MISO,MOSI

I2C通信分为几种型号类型:起始信号,终止信号,应答信号,写数据,读数据。

这种通讯方式一般迅速率在100k到400k之间。如果你的应用是比较高速的,并且只有一个从设备,建议使用spi通信。

如果你有多个从设备,就使用i2c通信方式。因为i2c通信,事实上是一种总线,在i2c总线上,最多可以挂在127个设备,根据地址和读写控制位,来对从设备进行读写操作。


重点吐槽


这个问题在我以前的工作中经常遇到,解决方法非常简单。一种是软件模拟IIC实现;另一种是换带有硬件IIC的单片机;其实在项目开发中,由于成本的考虑,会经常性的换不同价格的单片机。有的有硬件IIC通信端口(单片机自带SDA SCL端口),有的没有硬件IIC通信端口(单片机不带SDA SCL端口)。具体说明如下:

1、单片机不带硬件IIC通信口。比如早期的51单片机,PIC单片机。可以通过软件模拟IIC总线的方式实现通信。模拟IIC总线基本包括六个函数:①总线初始化;②启动信号;③应答信号;④停止信号;⑤写数据;⑥读数据。在使用时,只需正确调用各个函数就可方便的实现功能。

2、如果你的系统对IIC通信速率要求高,或者传输的数据量大,这时不建议用模拟IIC通信。应该选择具有硬件IIC的单片机,而且硬件IIC用法比较复杂,流程比较多,但是通信速度快,稳定性好。目前市面上的单片机基本都自带硬件IIC。比如新塘科技的N76E003单片机、 STM8S003F3单片机等等很多很多。

最后总结:单单就题目所问的问题:如果单片机没有SDA,SCL管脚,,那么就用软件模拟的方式解决。不过还是建议模拟IIC,和硬件IIC都应该掌握。这对将来的项目开发中非常有益。俗话说的好技多不压身,当你掌握知识技能足够多的时候,什么问题都不是问题。


科技屎壳郎


IIC总线 sda 是数据线 scl是时钟线。用于近距离双向同步串行数据传输。

spi是总线称呼,不是端口线。

如果端口名写spi 和scl ,那是书写不够严谨,spi线就是sda线!

既然有IIC端口线,也就无需软件模拟。

就这么简单直接!

如果是你自己看错了,有SPI而没有 IIC,那只好用两根普通端口线软件模拟IIC协议。


散居猎人


首先,需要确认一下问题描述:SDA信号存在于I2C接口里,而I2C接口里必然SCL/SDA配套出现的,所以一般单片机集成有I2C总线接口必然两个信号是配套的,如果真有您的情况,可以把单片机型号发出来确认一下。另外SPI总线不存在SCL信号。

其次,退一步讲,如果真有这种情况,有SDA,而没有SCL,那么只能用GPIO去模拟I2C时序来对接外设。如果要完成这个特性,则必须保证SDA信号管脚可以进行功能复用,即可以将管脚配置为GPIO功能。这一点很重要,不然的话,单片机自带时序和你模拟的时序很难满足I2C时序要求。


子充


是不是IO功能复用?有SPI怎会无IIC?真没有就只能用模拟,或者换型号咯


小铭哥23


应该没有这样的单片机吧,有SCL没有SDA


skyoyin


普通IO口模拟


分享到:


相關文章: