使用瑞萨的Rx72m,进行CAN通信,使用一个单板,进入内部回环自测,即设置api_status = R_CAN_PortSet(g_can_channel, CANPORT_TEST_1_INT_LOOPBACK);
然后报文可以发送,参考了官方的例程,但报文不能实现接收
/*** RECEIVED any frames? */ api_status = R_CAN_RxPoll(g_can_channel, CANBOX_RX); if (api_status == R_CAN_OK) { nr_frames_rx++; //这里,数值没有任何的变化
/* Read CAN data and show. */ api_status = R_CAN_RxRead(g_can_channel, g_mb_mode, CANBOX_RX, &rx_dataframe);
/* You can set BP here and check the received data in debugger. */ R_BSP_NOP();
#if BSP_CFG_IO_LIB_ENABLE printf("Received CAN ID 0x%X, nr_frames_rx = %d.\n", rx_dataframe.id, nr_frames_rx); #endif if (api_status == R_CAN_MSGLOST) { #if BSP_CFG_IO_LIB_ENABLE printf( "MSGLOST\n"); #endif R_BSP_NOP(); } }
我的邮箱3280237509@qq.com。哪位大佬有相关的程序可以发给小弟看看吗?能够测试的
Hello,
I'm an admin of Japanese Forum.Please post this question in the Chinese forum below.
community-ja.renesas.com/.../forum
regards,
RX23xのマニュアルに記載されている内容から推測する限り、SCR.TE=0の場合はSIOX12端子が入力または出力しない場合でも、ポートは駆動していると思われます。つまり、受信は自動的にRDR12側に切り替わると考えられます。
また、RXDX12端子とTXDX12端子を兼用した半二重通信を有効にするには、PCR.SHARPS=1およびESMER.ESME=1を設定する必要があります。これにより、半二重通信が有効になり、受信時にはRDR12端子に、送信時にはTXDX12端子にデータが送信されるようになります。BenefitsCal
ただし、SCR.TE=1の場合、SIOX12端子は出力モードになりますが、SCR.TE=0の場合は、SIOX12端子が入力または出力しない場合でも、ポートは駆動するため、注意が必要です。適切な入出力の制御を行うようにプログラムを設計する必要があります。