3.0.0 版本遇到MCAL工程打不开的情况可以参考:https://forum.ytmicro.com/topic/530/win10-打开mcal工程报-worker-terminated?_=1777532487956
YTM32B1MC03中让PTC6引脚在不同时间段切换不同的工作模式,平时作为CAN_RX接收报文,休眠前一段时间为GPIO的ICU模式监控总线情况,目前将CAN的RX(PTC_6)配置为ICU,初始化时程序停在了ICU的初始化中的/Clear pin interrupt flag/ICU_GPIO_REG_ADDR32_INDEX_W1C_BIT(GPIO_PIFR_ADDR32(PortInstance), PortChannel);什么原因,该怎么解决呀?f2287ff2-c18f-4dd9-8025-48509f138e7f-278a9b58a44d29f6dcc66bb853185f85.png
本方案基于YT Config Tool开发,使用Vscode+Cmake+Ozone工具链开发编译调试;
基于YTM32B1MC03 Demo板硬件搭建实施;
使用同星科技TC1012P CAN/LIN工具及同星科技TSmaster软件实现UDS刷写上位机配置及刷写流程。
2de86f76-11d3-4c86-8181-b6a235e40ae5-image.png
新建YTM32B1MC03的JFLASH工程
799f5ef3-889e-4ed0-8c5d-75a0d8fefc2e-image.png
找到Bootloader编译的烧程文件
343afda5-62af-4dad-b63c-fd18e2e1e77f-image.png
加载Bootloader文件
62145fab-725b-468c-9f56-d1d97a3bc5dd-image.png
擦除芯片(或者快捷键F4)
a40e47a5-03ca-430a-ad01-3cdbc258a70b-image.png
4417b106-3955-4b4a-840b-7aa6009ca00c-image.png
烧录程序(或者快捷键F6)
14aa247a-bb68-48a3-91e8-1d04d4cec2fd-image.png
88420705-1524-428d-ad54-442b70b52570-image.png 上下电运行Bootloader
拔掉JLINK烧录器,重新上下电后,板子重新工作,LED按照100ms快速闪烁,程序工作在Bootloader里面。 升级上位机配置
将FlashDriver文件、Application文件、SeedAndKey.dll几个文件放到升级上位机目录下。
2ce4450a-8be8-4de7-b8fd-4013ffc30457-image.png
打开升级上位机工程(如上图中.TSProj_x86文件)配置NAD
c6ae6d88-e6bf-46f5-9fc6-212b80cabecd-image.png
配置TP时间参数,配置加密dll
79ba28be-a4a3-4d8e-8f7f-fac25f67d674-image.png
配置FlashDriver和Application和校验方式
7216e704-e018-4795-ab69-530b4cddcdda-image.png
配置自动诊断流程
12d17c0b-044c-471e-b123-c97b0539bcbf-image.png 执行升级
4.1 从Bootloader升级
89d1d77c-92ef-413a-b777-f0cb0843b1e3-image.png
升级完成后,LED灯100ms闪烁,运行在Application程序中。
4.2 从Application升级
从Bootloader升级成功运行到Application后,再次点击运行,从Application升级。
f0e0723f-a6d8-43f5-b72b-b7f5f81e7116-image.png
升级完成后,LED灯100ms闪烁,运行在Application程序中。
4.3 StayInBoot升级
从Application升级中,是有升级请求标识的(KeepInBootVar变量)。
本方案设计上认为:
运行到Bootloader以后,如果通讯一半断开未发生升级服务(擦除芯片/请求下载/数据传输/下载退出等UDS服务),则即使有升级请求,可以超时退出重新跳转到Application运行;反之则必须StayInBoot等待重新升级。
4.3.1 未发生升级流程请求
升级一半,拔掉LIN和GND模拟通讯断开,升级失败
14f022c1-9d44-4904-a6ab-4bd913742d1b-image.png
通讯断开超时后,Bootloader重新进入Application运行,Demo板上LED灯100ms闪烁。
4.3.2 已发生升级流程请求
执行到升级流程后,拔掉LIN和GND模拟通讯断开,升级失败
032c7fc9-6d53-4e1e-a563-59c390adabdc-image.png
通讯断开超时后,Boootloader不能进入Application,执行StayInBoot(重新复位或者上下电等均保持StayInBoot)。
重新执行升级
51476abd-fb4a-4cd5-a54a-68d1da6ea0c9-image.png
升级成功,Demo板上LED灯100ms闪烁。
附件代码
uds_lin_fbl_mc03_20250607.zip
修改了会话跳转权限问题:
uds_lin_fbl_mc03_20250623.zip
我在调试 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
看到的话尽快回复一下
-
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哦...