首页 > 其他分享 >esp32 spi dma

esp32 spi dma

时间:2022-09-06 09:57:57浏览次数:98  
标签:DMA 读取 SPI esp32 写入 spi 正常 啟用 dma

最近购买了 c3 进行测试,发现了一个奇怪的问题!

当 SPI 啟用的 DMA 功能之后, 此时 SPI 会以十分怪异的方式出错!

(1) 不使用 DMA , SPI 以长度 64byte 读写正常
(2) 啟用 DMA , 写入不限制大小, 读取使用 FIFO 一个 byte 读取,读写正常
(3) 啟用 DMA , 读取不限制大小, 写入使用 FIFO 一个 byte 读取,读写正常


(4) 啟用 DMA , 读写不限制大小,此时读取正常,但是写入的资料第一笔正常 (350byte) , 之后所有的资料,出现了错误 了。 但是此时若是有用 SPI FIFO 方式的写入 (一个 byte 写入)这样的操作是正常的!

也就是说当啟用了 DMA , SPI 只能啟用 上面 (2) 或 (3) 的方式才能正常工作, 但是这样就丧失了 DMA 加速的功能了。 运行起来还没有 (1 ) 快

同样的駆动方式,在 S2 上 SPI 啟用 DMA 是正常的。



备注: 我买到的 c3 是版本 2 的, 不知是否是 版本 2 芯片的问题! 因為买不到 版本 3 无法证实!

 

[已解决」C3 SPI 运行 DMA 功能是否有问题! - ESP32 Forum

 

pi_master.h的接口函数有两种方式调用SPI,中断传输SPI和轮询传输SPI。官方不建议混用两种方式。

标签:DMA,读取,SPI,esp32,写入,spi,正常,啟用,dma
From: https://www.cnblogs.com/hshy/p/16660706.html

相关文章

  • esp32 gpio 设置
    voidvSetSSN(intvalue){//GPIO_CS//gpio_set_direction(GPIO_CS,GPIO_MODE_INPUT);//写这个或下一个......
  • spi 知识
    SPI(SerialPeriphralInterface)最早是由摩托罗拉公司设计并实现,它是一种高速的、全双工的通信总线,采用主机(Master)-从机(Slave)的方式进行通信。SPI占用芯片的四个引脚,也就是......
  • esp32 spi 正常一个标准流程
    uint8_tcmd[10]={0x55,0x00,0xB0,0x99,0x00,0x00,0x02,0x00,0x08,0x00}; cmd[9]=getLRCx(&cmd[1],8); charsendbuf[10]; charrecvbuf[10]; memcpy(......
  • spi一个标准流程
    uint8_tcmd[10]={0x55,0x00,0xB0,0x99,0x00,0x00,0x02,0x00,0x08,0x00}; cmd[9]=getLRCx(&cmd[1],8); charsendbuf[10]; charrecvbuf[10]; memcpy(......
  • esp32 spi
    /*SPISlaveexample,sender(usesSPImasterdriver)ThisexamplecodeisinthePublicDomain(orCC0licensed,atyouroption.)Unlessrequiredby......
  • esp32 jia
      /*Loadservercertificate*/  externconstunsignedcharservercert_start[]asm("_binary_servercert_pem_start");  externconstunsignedchar......
  • 接口协议(2) - SPI
    SPI(SerialPeripheralInterface)是一种可以全双工/半双工/单工通信的接口协议,由2(单工)/3(双工)条信号线和1+条(每个从设备1条)片选信号线组成。支持MSB/LSB传输模式,支持......
  • 关于windows11 家庭版 无法关闭内核DMA和基于虚拟化安全的问题(AR40报错)
    系统版本:windows11家庭版,出厂自带的windows11家庭版(预装)CPU是inter的11代我忘记具体型号了(另一台也是inter12代的I7出现过)问题概述:在关闭了hyper-v后和手动关闭了内核......
  • 自旋锁(spin)与互斥量(mutex)
    自旋锁程序在多处理器上运行会因为,多个线程同时进行,而导致丧失语句的原子性。例如读和写的操作是分开的,不能保证同时完成。所以软件不够用硬件来凑,通过硬件实现一条指......
  • delphi 【数字微调编辑框组件TcxSpinEdit】
      此控件仅支持数字数.默认情况下不支持小数点,但支持负数输入.1.设置控件支持小数点输入.properties---valueType:=vtFloat2.隐藏边框右边的微调按钮.pr......