3.0.0 版本遇到MCAL工程打不开的情况可以参考:https://forum.ytmicro.com/topic/530/win10-打开mcal工程报-worker-terminated?_=1777532487956
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
程序调用CLOCK_DRV_Init,返回值为STATUS_SCU_CLK_SWITCH_TIMEOUT。程序就运行不下去了。
410546bd-4962-4308-a394-87f9159aa745-image.png
e3ee154d-a10f-4f59-b027-2e4dbf9d7177-image.png
扒源码发现是
CLOCK_SYS_SetScuConfiguration ->
CLOCK_SYS_ConfigureSystemClock(SCU_SYSTEM_CLOCK_SRC_SIRC); ->
在这个函数里,没有设置成要设的SIRC,超时了。
但是我跑I2C的例程,是可以正常初始化的,IIC的例程可以正常运行。看了一下SCU和CMU的配置,IIC和SPI也是一样。
950ef82e-7d44-4d40-91c8-3703b8132a0d-image.png
只有IPC的配置不一样。
d52511fe-bac1-46fb-a9c7-9918a50fbfd7-image.png
所以这里求助下,这是什么原因?
YTM32B1MD2x 支持硬件加密 (HCU),目前支持的基础算法有
AES-ECB AES-CBC AES-CMAC SHA-256 RSA-1024/2048/3072/4096 ECC-192/256/384 ECDSA其中 AES 相关算法仅支持 128-bit 密钥长度
ECDSA 仅支持 任意 ECC-256 曲线 + SHA-256
目前封出 HCU 的静态库,具体如何使用可参考下方 Demo,以及 使用说明
另外,AES 相关算法所使用的密钥可存储在 HCU_NVR (0x1100_1A00 ~ 0x1100_1DFF),该区域不可读,擦除与编程受 Customer Key 保护。密钥存储单元为 16字节(128-bit),共可存储 64 组密钥。
RSA 所用到的公钥,或私钥可存储在 RSA_NVR (0x1100_1200 ~ 0x1100_19FF),该区域不可读,擦除与编程受 Customer Key 保护。密钥存储单元为 512字节 (4096-bit),共可存储 4 组密钥。
上述提及的 HCU_NVR 与 RSA_NVR 使用方法也在 Demo 中有展示。
YTM32B1MD2x_HCU_Demo.zip
YTM32B1MD2x HCU Demo 使用说明.pdf
-
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哦...