你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
我首先打开了串口一的DMA接受数据,是可以的,接下来配置LWIP网络,出现了串口接收信息为空的现象,然后我逐步排查,发现了在打开DCache后串口会接收不到数据。芯片是STM32H743XIH6,工具是STM32CubeIDE 1.16.0
举报
xmshao 发表于 2024-12-17 11:06 你可以尝试在读取接收数据之前先做个D-cache失效操作,这样让CPU无视D-Cache而直接去实际物理存 储器区读取 ...
我用的DMA空闲中断读取,只能在读取后触发中断,如果是读取之前关闭
DCache,岂不是等于一直关闭DCache。读取完一帧数据后,是否还不能打开DCache,因为这样等于下一次读取之前还是打开的
xmshao 发表于 2024-12-17 16:08 你倒不一定要关闭DCache的使用。</p> <p>
SCB_InvalidateDCache_by_Addr填入的地址应该是哪里的地址?我试过了缓存数组的、还试了DMA的结构体,没有用
贱独呱 发表于 2024-12-19 18:16 SCB_InvalidateDCache_by_Addr填入的地址应该是哪里的地址?我试过了缓存数组的、还试了DMA的结构体 ...
[md]UART接收缓冲的地址。
xmshao 发表于 2024-12-20 09:52 UART接收缓冲的地址。
找到问题了,不应该是在DMA接收之前调用,应该在接收之后,这样清除Cache后,其中的数据会回到原始地址
贱独呱 发表于 2025-1-14 09:10 找到问题了,不应该是在DMA接收之前调用,应该在接收之后,这样清除Cache后,其中的数据会回到原始地 ...
[md]呵呵 OK
关于甘肃如何开具餐饮费发票-甘肃本地宝
关于陕西如何开具餐饮费发票-陕西本地宝
关于贵州如何开具餐饮费发票-贵州本地宝
关于扬州如何开餐费发票-扬州本地宝
关于四川如何开具餐饮费发票-四川本地宝
关于海南如何开具餐饮费发票-海南本地宝
关于广东如何开具餐饮费发票-广东本地宝
关于宿迁如何开餐费发票-宿迁本地宝
关于湖南如何开具餐饮费发票-湖南本地宝
关于湖北如何开具餐饮费发票-湖北本地宝
你可以针对UART的接收buffer做Dcache的无效操作。
ALIGN_32BYTES(static uint32_t UART_BufferBUFFER_SIZE])={0};
SCB_InvalidateDCache_by_Addr (void * addr, uint32_t dsize);
或者针对接收缓冲区做MPU配置,配置其为device属性也可以。
储器区读取数据。相应的库函数代码是SCB_InvalidateDCache();
我用的DMA空闲中断读取,只能在读取后触发中断,如果是读取之前关闭
DCache,岂不是等于一直关闭DCache。读取完一帧数据后,是否还不能打开DCache,因为这样等于下一次读取之前还是打开的
SCB_InvalidateDCache_by_Addr填入的地址应该是哪里的地址?我试过了缓存数组的、还试了DMA的结构体,没有用
[md]UART接收缓冲的地址。
找到问题了,不应该是在DMA接收之前调用,应该在接收之后,这样清除Cache后,其中的数据会回到原始地址
[md]呵呵 OK