3.0.0 版本遇到MCAL工程打不开的情况可以参考:https://forum.ytmicro.com/topic/530/win10-打开mcal工程报-worker-terminated?_=1777532487956
我在调试 autosar 过程中,发现发送端发送如下帧数据,
2026-05-14_07-18.png
接收中断只能进入两次,后面再发送数据也无法进入 CAN0_ORed_0_15_MB_IRQHandler 接收中断了,看了下相关寄存器如下:
全局中断是开的,
是因为
2026-05-14_07-22.png
是因为这两个位置1导致的么?
或者还有什么可能的原因?
反馈一下使用CddI2c的两个问题
1.使用CddI2c_SyncModeTransfer这个阻塞传输接口时发现缺少对MIE寄存器里的中断使能,只有在结束时disable了这些中断使能,导致使用这个接口时Arbitration Lost 、 line low timeout这些错误检测不到,实际测试短SDA,SCLK到地后再移除故障时,I2C不能恢复正常工作。
a9950c90-a758-4ec4-9008-9d62eb56902d-image.png
efe3f778-f214-4f51-8a80-c13622861106-image.png
2.I2C_Lld_MasterIRQHandler中断处理里把Pin Timeout当成I2C_MASTER_EVENT_END_TRANSFER事件处理感觉也不太合理
7e30683e-dfa5-4834-a3f1-d2d72b0803ab-image.png
Config Tool Version:2.7.8
ME05 SDK version:1.4.0
EVB version: YTM32B1ME0-EVB Rev.C
f9171403-3a59-40dd-addc-bc154d8dcc3a-image.png 4.2 SPI功能配置 这里只考虑主机发送和接收的配置:
eb4dd768-a168-4e6a-90e3-b7be7db43041-image.png 4.3 DMA发送完成中断重新配置DMA
4.3.1 TX DMA
找到 SPI_DRV_MasterCompleteDMATransfer 函数,这个函数会在DMA完成中断中调用。 注释掉原有的SPI传输完成操作,添加如下代码:3409bdfe-c01c-496e-823d-cdbaeab0b9a8-image.png 如上图,重新配置DMA通道0的源地址,TriiggerCount,最后StartChannel. 4.3.2 RX DMA 找到 SPI_DRV_MasterCompleteRX 函数,这个函数会在DMA完成中断中调用。 注释掉原有的SPI接收完成操作,添加如下代码:
f6341ba2-1dac-43d6-b9df-c87003d74604-image.png 如上图,重新配置DMA通道1的目标地址,TriiggerCount,最后StartChannel. 4.4 代码配置 只需调用一次 SPI_DRV_MasterTransfer ,MCU就会一直发送SPI波形,因为有DMA,程序不会频繁进入中断处理,只会在DMA发送完成中断里处理一下就行,软件负载低。 如果想将进一步降低软件负载,可将发送的长度(1024byte)适当扩大。
ecfb174c-100e-44e1-92d9-80af32ddad90-image.png 调试,将SIN和SOUT连接
9e97b680-c3bf-4d1a-be40-327e3cb1b9a1-image.png 5. 实测波形 通道0是片选线,通道1是时钟线,通道2是MOSI,通道3是MISO,通道4代表DMA完成中断处理时间。 如下图,波形连续发送无间隔
bea0e8ae-f52b-440a-b9d3-0911c2c8c0a0-image.png 6. 示例工程 SDK:
02beb926-8d95-4aa4-afb4-fde884ad6c17-Spi_Master_DMA_Continue_Send.zip MCAL:
f4b5fbd6-b97d-4438-91ae-4cfef9eac736-SPI_Master_clk_continue_out.zip
使用的demo工程Etmr_Pwm_Complementary_Demo,
测的tmer1的ch4和ch5,
问题:发现实测(312ns)的死区时间和理论(375ns)的不一致有偏差
主频48mhz,计算公式:(1+1)*(8+1)/48mhz=375ns
过程:
YCT配置
bfa6633f-bcc4-4b9c-a360-e6c352ddc49c-image.png
手册公式计算:
96262fe5-1b50-4d52-b003-8655a2c62191-image.png
实测波形
d1fc9746-4394-486b-bc3c-db40119acd07-image.png
看到的话尽快回复一下
软件版本:MD2 0.9.1
MC0 2.3.0
1、同步发送缺帧问题
使用UART硬件进行串口通信,使用DMA,连续调用同步发送,发现同步发送不完全。
4e01cf3b-9346-4ce2-88d1-ad9c74908549-img_v3_0211h_ae0f27eb-07dd-4fe7-bc9e-2065a75d32eg.png
5203a91d-2794-4523-a65b-652eb4685e9e-img_v3_0211h_f8463101-d811-4334-a2ef-8ea1202e1e7g.png
原因:
同步发送内部依然使用DMA进行发送(新版本使用轮询的方式,DMA只作用于异步通信),当DMA将数据搬入FIFO完成时,在软件层面上被认为搬移完成,但其实硬件还未来得及将FIFO中的数据发送到总线上。此时立即再次调用同步发送就会导致发送不完全的问题。
解决方案:
调用完同步发送后稍加延时,让硬件将FIFO数据发送完成后再进行新的发送请求。
c7dc7885-a999-40f1-aa3c-4ec54cf3c25f-img_v3_0211h_f34c1946-6232-41c9-aa2b-b0fab4fe5a0g.png
2、UART IP使用DMA配置IDLE中断
存在BUG,当UART使用DMA进行通信时,IDLE如果触发,没有及时清理标志位,导致一直进入中断。
解决方案:
在触发IDLE中断时结束通信的同时及时清除标志位。
21c8931b-44e1-4908-b148-921c852a3850-img_v3_0211h_e8f34736-c807-492a-af68-3dd7803c627g.png
附上MCAL MD2 CddUart模块 DMA+IDLE中断参考DEMO
CddUart_Idle_Demo.zip
开发JTAG保护,使用论坛最新的驱动后,在FLASH_DRV_EraseSector时返回error了,目前使用flash_driver_bin_20260411+SDK1.4;之前使用去年的flashdriver+SDK1.3验证成功过。
请帮忙分析一下,谢谢。
地址为:#define EFM_CUS_NVR_ADDR (0x10000000)
长度为:#define FEATURE_EFM_NVR_ARRAY_SECTOR_SIZE (0x800u)
flash_driver_bin_20260411.zip
aea6d09f-0244-45fc-b1be-98f769536456-25a2c485d7f488adbff908ad89848a4e.png d87e2b70-8f92-44f9-9ed8-263839ccdfc3-cb9098cb0e026c06c65a43e91fbd1651.png
-
Announcements
Announcements regarding our community
-
Discussion & Question
A place to talk about whatever you want or ask a question
-
Blogs
Blog posts from individual members
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...