大家好,今天小编关注到一个比较有意思的话题,就是关于农民专业合作社星级的问题,于是小编就整理了1个相关介绍农民专业合作社星级的解答,让我们一起看看吧。
STM32中,DMA和IIC好像都是用来传输数据的,有什么区别吗?
看了几个答案,来个简单解答吧。
iic是系统与外部器件的一种通讯协议,类似的协议世界上有很多,可以直接在网上查到协议规定。
DMA是芯片内部的数据传输,可以是片上外设和内存之间,也可以内存之间,还可以是外设与外设之间直接传输数据,具体设置参考芯片说明书。好处是设定好DMA参数以后不需要另外再写通信控制协议,很好用。这样能节省很多CPU计算控制***。另外注意一下用DMA时会用掉一半的通信总线带宽,要控制好这时的总线上设备的数据传输量。
I2C是通讯协议,就是MCU对外用来通讯的。和USART,SPI,CAN这种一样,而dma是MCU内部的一个功能部件,叫直接存储器访问,用于外设和存储器或者存储器与存储器之间的数据传输。DMA的目的是在无需CPU控制的情况下快速移动数据。
举个例子🌰,我刚做的一个应用。CPU先控制ADC进行***样,然后将***样数据发送给上位机。那我CPU和上位机之间就是通过串口进行连接,DMA没有办法连接到外面。然后我由于***样频率特别高,然后我***集到的数据还得计算,这样的话,整个流程就是:***集数据—处理数据—传输数据,这样循环。前面说了,我这个频率特别高,那这样一个流程下来是需要时间的,频率就受限制了。那这时候我就使用DMA,在处理数据之后,数据保存在flash中,这时候传输数据就可以用DMA来控制,DMA从flash中取出数据,放到USART的发送缓存中,这样就不用CPU进行控制了,CPU就处理完数据后返回***集数据就行,就能有效提高频率。
一般DMA可以配合I2C,SPI,USART等等进行操作,也可以脱离这些,单纯从一块flash搬运到另一块flash,DMA的主要目的是减少CPU的参与,使CPU有更多时间去做别的事。DMA就一控制器,没有办法与外部进行连接。
一般来说DMA属于内部总线,iic等这些是外设。所以这注定了DMA用来连接芯片内部的外设和ram。而外设用来连接芯片外部的设备。当然DMA也不是都不能连接芯片外设备,比如有些单片机的rom或者ram需要外置时候,可以用DMA直接操作,但这也是极少数。
DMA和IIC是两种完全不同的东西。IIC是一种通讯方式、一种通讯协议,用于芯片之间或者用于板子之间等近距离的通讯。而DMA是一种控制器、单片机的片上***,是直存储器访问的意思。IIC可以使用DMA进行数据传输。下面分别介绍。
1
IIC通讯协议介绍
IIC是芯片间常用的一种近距离通讯方式,常用的通讯速率有100Kbit/s,400Kbit/s等,具有SDA和SCL两根线。SCL是通讯时钟线,SDA是数据传输线,每个IIC设备都有一个唯一的设备地址,地址为1个字节,高七位为设备地址,低一位为读/写操作。其总线拓扑结构如下图所示。
IIC通讯比较典型的应用就是AT24C04,该存储芯片的通讯方式为IIC,只需要两根线即可实现数据的通信,在硬件电路的设计上一般要在通讯总线上加两个上拉电阻。如下图所示。
2
DMA直接存储器访问介绍
DMA是直接存储器访问,不经过CPU而直接从内存存取数据的数据交换方式。传统的数据交互方式,比如有两个存储器要进行数据交互的话,需要通过单片机从存储器1获取数据后再转送给存储器2,单片机必须要做倒手处理。而DMA就是不通过单片机,即可实现存储器1和存储器2的数据交互,而单片机只需要向DMA下达控制指令即可。DMA可以用在IIC,SPI,UART,AD等***中。多个器件在进行数据交互时不再需要单片机的参与,而只需要DMA完成后通知单片机即可。
以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。
到此,以上就是小编对于农民专业合作社星级的问题就介绍到这了,希望介绍关于农民专业合作社星级的1点解答对大家有用。