瑞萨技术支持工程师,你们好,目前在使用过程中有个问题请教一下,下图是所使用芯片RA4M2AB3(48PIN)的IO口,误操作了P003和P004的寄存器位,导致单片机损坏了,不知道原因为何,P0口没有外引的端口寄存器位不能操作?有遇到过的来交流一下。
请问您做了怎样的操作?
MCU的损坏通常来说,应该是由于操作所引起的过压或过流造成的
查明是后级的驱动的问题导致了单片机损坏。
现在有了另外一个问题DMA+SCI的发送数据的问题:在发送函数中,进行地址和长度重置,
R_DMAC_Reset(&g_transfer2_sci4_tx_ctrl,(void*)uiSendBuffer_Addr,(void*)&R_SCI4->TDR,usSendLen); SEND_ENABLE; //使能发送 R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS); /* 手动触发传输数据寄存器空中断*/ R_SCI4->SCR_b.TE = 0; R_SCI4->SCR |= (0xA0);
串口助手进行测试时,发现只有第一次的DMA发送数据是正确的,后面的帧数据都是少了第一个字节“27”,试了很多办法,都没有找到原因。看了传入DMA的地址和长度都是对的。请帮忙分析一下。
[11:48:05.335]发→◇27 03 00 00 00 0A C2 CB □[11:48:05.392]收←◆27 03 14 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 3F 80 C2 B4 [11:48:06.587]发→◇27 03 00 00 00 0A C2 CB □[11:48:06.644]收←◆03 14 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 3F 80 C2 B4 [11:48:07.892]发→◇27 03 00 00 00 0A C2 CB □[11:48:07.948]收←◆03 14 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 3F 80 C2 B4 [11:48:08.965]发→◇27 03 00 00 00 0A C2 CB □[11:48:09.023]收←◆03 14 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 3F 80 C2 B4
损坏的问题已经查明原因确实是后级的驱动导致的,
现在有了新的问题,串口+DAM发送数据的问题:
R_DMAC_Reset(&g_transfer2_sci4_tx_ctrl,(void*)uiSendBuffer_Addr,(void*)&R_SCI4->TDR,usSendLen); SEND_ENABLE; //使能发送 R_BSP_SoftwareDelay(1,BSP_DELAY_UNITS_MILLISECONDS); /* Enable the DTC to handle incoming transfer requests. */
WDT_Clear(); //err = R_DMAC_SoftwareStart(&g_transfer2_sci4_tx_ctrl, TRANSFER_START_MODE_SINGLE); /* 手动触发传输数据寄存器空中断*/ R_SCI4->SCR_b.TE = 0; R_SCI4->SCR |= (0xA0);
只有第一帧数据发送是正常的,后面的帧都少了第一个字节“27”的数据,这个原因是什么呢,暂时试了很多没有找到原因是什么,请给予支持。
已查明原因是因为负载太重导致。
目前遇到了SCI+dma发送数据第一次正常,后面再发就会丢失第一个字节的数据,配置如下:
串口助手发送和收到数据对比
请给予原因分析和支持。
补充串口dma的配置代码:
您使用分析仪抓抓波形,是否确认SCI发送时第一字节丢失了
再就是设个断点看看,第二次发27时,是否出发的DMA