RX660 RTSの動作について

マイコン初心者です。
初めて投稿します。

RX660の調歩同期式シリアル通信を行うために
RTSの Hi/Lo で送信制御をしようとしています。
しかし、初期化の際にRTSをLo出力しようと、void R_Config_SCI1_Create_UserInit(void)の関数内に
SCI1.SCR.BIT.RE = 1U; を追加したところ、RTSの信号がHi/Loを繰り返すという現象が起きております。
Low固定の予想でしたが、繰り替えす原因が不明なため、助けていただけないでしょうか。

環境はCS+(V9.09)とスマート・コンフィグレータ(V1.02)で生成したコードをE2 Liteで書き込んで使っています。

以下初期化部分
<Config_SCI1.c>
void R_Config_SCI1_Create(void)
{
/* Cancel SCI stop state */
MSTP(SCI1) = 0U;

/* Set interrupt priority */
IPR(SCI1, RXI1) = _0F_SCI_PRIORITY_LEVEL15;
IPR(SCI1, TXI1) = _0F_SCI_PRIORITY_LEVEL15;

/* Clear the control register */
SCI1.SCR.BYTE = 0x00U;

/* Set TXD1 pin */
MPC.P16PFS.BYTE = 0x0AU;
PORT1.PODR.BYTE |= 0x40U;
PORT1.PDR.BYTE |= 0x40U;

/* Set RXD1 pin */
MPC.P15PFS.BYTE = 0x0AU;
PORT1.PMR.BYTE |= 0x20U;

/* Set clock enable */
SCI1.SCR.BYTE = _00_SCI_INTERNAL_SCK_UNUSED;

/* Clear the SIMR1.IICM, SPMR.CKPH, and CKPOL bit, and set SPMR */
SCI1.SIMR1.BIT.IICM = 0U;
SCI1.SPMR.BYTE = _00_SCI_RTS | _00_SCI_CLOCK_NOT_INVERTED | _00_SCI_CLOCK_NOT_DELAYED;

/* Set control registers */
SCI1.SMR.BYTE = _00_SCI_CLOCK_PCLK | _00_SCI_MULTI_PROCESSOR_DISABLE | _00_SCI_STOP_1 | _00_SCI_PARITY_DISABLE |
_00_SCI_DATA_LENGTH_8 | _00_SCI_ASYNCHRONOUS_OR_I2C_MODE;
SCI1.SCMR.BYTE = _00_SCI_SERIAL_MODE | _00_SCI_DATA_INVERT_NONE | _00_SCI_DATA_LSB_FIRST |
_10_SCI_DATA_LENGTH_8_OR_7 | _62_SCI_SCMR_DEFAULT;
SCI1.SEMR.BYTE = _02_SCI_INSTANT_TRANSMIT_ENABLE | _00_SCI_BIT_MODULATION_DISABLE | _00_SCI_DEPEND_BGDM_ABCS |
_00_SCI_16_BASE_CLOCK | _00_SCI_NOISE_FILTER_DISABLE | _00_SCI_BAUDRATE_SINGLE |
_00_SCI_LOW_LEVEL_START_BIT;
SCI1.SPTR.BYTE = _00_SCI_IN_SIGNAL_NOT_INVERT | _00_SCI_OUT_SIGNAL_NOT_INVERT | _00_SCI_RECEIVE_TIME_NOT_ADJUST |
_00_SCI_TRANSMIT_TIME_NOT_ADJUST | _03_SCI_SPTR_DEFAULT;

/* Set bit rate */
SCI1.BRR = 0xC2U;

/* Set RTS1# pin */
MPC.P14PFS.BYTE = 0x0BU;
PORT1.PMR.BYTE |= 0x10U;

R_Config_SCI1_Create_UserInit();
}


<Config_SCI1_user.c>
void R_Config_SCI1_Create_UserInit(void)
{
/* Start user code for user init. Do not edit comment generated here */
SCI1.SCR.BIT.RE = 1U;
/* End user code. Do not edit comment generated here */
}

Parents
  • わわいです

    > RTSの信号がHi/Loを繰り返すという現象が起きております。

    そもそも、RTSという信号は、受信可能になるとLowになる信号ってことですんで、それで正常な動作なんではないでしょうか。

    Highになって困るということならば、受信可能にした後に、RTSを有効にするとかする必要があるのでは。

  • RTS(P14)がH/L繰り返している時、RXD(P15)に何か信号が入っていないでしょうか。(有効な通信ではなく、偽パルスの様な信号。)

    可能であれば、P15の波形を見てみてください。外部から信号を入れなければ、Hをキープしているはずです。(通信相手のTXD以外で)回路的に、P15につながっている信号はないか。(P14の立ち下がりエッジ→P15に信号が回り込む様な回路上のパスが存在しないでしょうか。)

  • Yamamoto様、わわい様、tf様

    回答ありがとうございます。

    私自身が RTSの使い方等を勘違いしていた部分もあったので、

    もう一度マニュアル、コード等見直してみます。

    ご教授頂きありがとうございます!!

Reply
  • Yamamoto様、わわい様、tf様

    回答ありがとうございます。

    私自身が RTSの使い方等を勘違いしていた部分もあったので、

    もう一度マニュアル、コード等見直してみます。

    ご教授頂きありがとうございます!!

Children
No Data