icfans

单片机没有I2S可以用普通IO口代替吗?

0
阅读(896) 评论(0)

i2s接口可以用普通IO口或者spi接口代替吗,程序需要修改哪些地方,记得好像要加一个主时钟信号还有啥?


石头

国内某知名电源企业 电源硬件工程师

我想首先题主可能要搞清楚i2s,spi,以及io口的含义,i2s,spi,是两种不同的总线协议,它规定了数据传输的具体过程,而并非指具体的硬件电路。某些型号的单片机在芯片内部集成了可以直接实现上述传输协议的电路,这部分电路又被称为外设。而io口是单片机的输入输出口,是具体的硬件电路,所有单片机都有。

接下来,我们来看一下i2s与spi的区别。首先,i2s有三个信号:串行时钟SCLK,也叫位时钟(BCLK). 帧时钟LRCK,(也称WS),串行数据SDATA。以下是具体的时序图。



而spi一般有四个信号,它们是SDI(数据输入)SDO(数据输出)、SCLK(时钟),CS。以下为是时序。



由以上可知,题主所提到的spi(个人推测是单片机自带的spi外设)是无法实现i2s数据传输。

但是,以上总线协议(无论是i2s还是spi)都是通过数据线上高低电平的变化来传输数据的,只不过有了具体的规则,这个规则就是时序。只要我们能够实现时序图里所示的变化,就实现了数据传输。而普通io口就可以方便的实现以上要求,故能够通过io来实现i2s数据传输。实际上,只要是数字信号传输,给了具体的时序图,io口工作速度满足要求,我们都能用io口来实现,不管是i2s还是spi,i2c等。

来自半导体社区


阿飞


国内某知名芯片设计公司 ASIC设计工程师

STM32有些SPI跟I2S时复用的可以这样做,但是并不是所有的SPI都跟I2S复用 

可以考虑使用CUBEMX配置,会自动生成底层配置文件的,之后可以参考这个配置文件自己再来配



原文:单片机没有I2S可以用普通IO口代替吗?