芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

芯片解密STM32之SPI的DMA操作

芯片解密实验目标

学会配置STM32SPI寄存器和DMA寄存器,实现STM32SPI1SPI2通信功能,每次发送一字节数据,并可多次发送,如果接收的数据正确,则点亮LED灯。之后看可以利用DMA来实现什么功能~~~

芯片解密实验目的

加入DMASPI通信相对于普通SPI通信有什么好处?STSPI加了DMA功能出于什么目的?我觉得这是很重要的一个问题,一直边学习边想。以下是我的看法:

减少CPU负荷?我想这应该是DMA最主要的功能,可是对于SPI通信来说,其实大部分时候我们需要根据发送的指令->目标器件的应答来决定下一个指令,所以此时CPU还是需要一直等待每次通信的结束。而且像SD卡的操作,是一个顺序流的指令操作过程,用中断也不容易控制。那到底加入了DMA有什么好处?仔细查看了STM32F10xxx的用户手册,发现这么一行字“连续和非连续传输:当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE的上升沿(TXE中断),并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续的通信;此时,在每个数据项的传输之间的SPI时钟保持连续,同时BSY位不会被清除。如果软件不够快,则会导致不连续的通信;这时,在每个数据传输之间会被清除”以及




也就是说如果连续传输而不使用DMA的话,需要CPU不停检测TXE并很快地置入SPI->DR的值,对于复杂程序的话这是很难达到的,而如果使用DMA,就可以轻易实现连续传输,CPU只需等待其完成就好。我想到的一个应用就是在写SD卡的时候,每次写一个块512字节,就可以用到,能提高SD卡的写入数据速率。

其次还可以降低功耗,记得数字集成电路老师说过一句话“软件上降低数字电路功耗的一个方法就是减少电平转换。”那么连续通信的时候,像SPIBSY电平转换会大大减少!

最后一点,虽然效果不大,就是如果不是用DMA,那么CPU的工作就是搬运工,把SPI->DR的内容搬到内存存储起来,而如果使用DMA,就省略了这个环节!

我想,为什么实现同一个功能,有的执行起来很流畅,有的却很卡,应该和这些小细节的减载有关吧。

这次先把SPI基本通信写出来,然后再写SPI的连续通信,并看能不能用到SD卡读写上。

芯片解密

SPI全双工通信的特点:一边发送一边接收,硬件上只有一个SPI->DR寄存器和两个缓冲器(发送缓冲器和接收缓冲器),主模式(从模式类似):SPI->DR会先读发送缓冲器,并通过MOSI管脚(Master output Slave Input)一位一位地发送出去,在发送的过程中,SPI->DR的数据会左移(如果是高位先发送),并且会从MISOMaster input Slave output)读入数据填补SPI->DR左移后的空缺。传完8比特后,SPI->DR再把数据并行写入接收缓冲寄存器。



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信