お世話になります初心者IKUZOと申しますRL78/G1EのUART1とDMA0/1を使用して32Byteの送信/受信をしたいです、以前にチョコさんのアドバイスに2017/11/27 1:29「>このDMAですがRS485のTXとRXに使用したいと思います受信はいいのですが,DMAでの送信は要注意です。最初の送信データはプログラムでTXDnレジスタに書き込むか,データバッファに全てのデータを設定しておいて,最初だけはソフトでDMAを起動させる必要があります。」という内容があったのですが具体的に教えていただくことは可能でしょうか?現在コード生成で以下のように設定しておりますが生成された内容はByte単位の送受信のようになっているように思います
試行錯誤でなんとか出来ました ●初期設定 R_UART1_Start(RX,TXTXとRXの割込みを禁止) R_DMAC0_Start(RX側) memcpy((char*) &g_Dmac1 , "01234567890123456789012345678901",32); ●送信 DMAMK1 = 1U;\ DMAIF1 = 0U;\ DRA1 = (uint16_t)g_Dmac1;\ DBC1 = _0020_DMA1_BYTE_COUNT;\ DEN1 = 1U;\ DST1 = 1U;\ DMC1 |=0x80; ●受信 sf.g_Dmac1_txd[0]++; DMAMK0 = 1U; DMAIF0 = 0U; DRA0 = (uint16_t)sf.g_Dmac0_rxd; DBC0 = _0020_DMA0_BYTE_COUNT; printf("DRA0=%08lX\r",DRA0); printf("DBC0=%04X\r",DBC0); mem_dump((char *)&sf.g_Dmac0_rxd, 2); DEN0 = 1U;//開始 DST0 = 1U; このようにしましたら t DRA0=FE04F7DC DBC0=0020 Ok. t2 DRA0=FE04F7DC DBC0=0020 000FF7DC 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 000FF7EC 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 Ok. t DRA0=FE04F7DC DBC0=0020 Ok. t2 DRA0=FE04F7DC DBC0=0020 000FF7DC 31 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 000FF7EC 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 Ok. という風に正常に表示いたしました、 これは割込みを使用していないので、他の割込みによるタイミングを 荒らすことはありません、処理終了後DBC0の値で受信データがあるかどうか 評価できますので問題ありません。