I used KM34Z128. it is working 300 bd and 8N1. but not able configure 7E1 mode. how to configure 300bd 7E1
UART3_Init(UART_MODULE_INTRMODE_CONFIG1(SET_300_BR,SystemState.SysClk));
UART_InstallCallbackUART2_UART3(UART_INTERRUPT_PRIORITY, OpticalEventHandler);
#define UART_MODULE_INTRMODE_CONFIG(brate,bclk) \
(tUART){ \
/* BDH */ CLR(UART_BDH_RXEDGIE_MASK)|((CALC_SBR(brate,bclk)>>8)&0x1f), \
/* BDL */ ((CALC_SBR(brate,bclk)>>0)&0xff), \
/* C1 */ CLR(UART_C1_LOOPS_MASK)|CLR(UART_C1_RSRC_MASK)| \
/* .. */ CLR(UART_C1_M_MASK)|CLR(UART_C1_WAKE_MASK)| \
/* .. */ CLR(UART_C1_ILT_MASK)|CLR(UART_C1_PE_MASK)| \
/* .. */ CLR(UART_C1_PT_MASK), \
/* C2 */ CLR(UART_C2_TIE_MASK)|CLR(UART_C2_TCIE_MASK)| \
/* .. */ SET(UART_C2_RIE_MASK)|CLR(UART_C2_ILIE_MASK)| \
/* .. */ SET(UART_C2_TE_MASK)|SET(UART_C2_RE_MASK)| \
/* .. */ CLR(UART_C2_RWU_MASK)|CLR(UART_C2_SBK_MASK), \
/* S2 */ CLR(UART_S2_RXEDGIF_MASK)|CLR(UART_S2_MSBF_MASK)| \
/* .. */ CLR(UART_S2_RXINV_MASK)|CLR(UART_S2_RWUID_MASK)| \
/* .. */ CLR(UART_S2_BRK13_MASK), \
/* C3 */ CLR(UART_C3_T8_MASK)|CLR(UART_C3_TXDIR_MASK)| \
/* .. */ CLR(UART_C3_TXINV_MASK)|CLR(UART_C3_ORIE_MASK)| \
/* .. */ CLR(UART_C3_NEIE_MASK)|CLR(UART_C3_FEIE_MASK)| \
/* .. */ CLR(UART_C3_PEIE_MASK), \
/* MA1 */ SET(UART_MA1_MA(0x00)), \
/* MA2 */ SET(UART_MA2_MA(0x00)), \
/* C4 */ CLR(UART_C4_MAEN1_MASK)|CLR(UART_C4_MAEN2_MASK)| \
/* .. */ CLR(UART_C4_M10_MASK)|((CALC_BRFA(brate,bclk)>>0)&0x1f), \
/* C5 */ CLR(UART_C5_TDMAS_MASK)|CLR(UART_C5_RDMAS_MASK), \
/* C7816 */ CLR(UART_C7816_ONACK_MASK)|CLR(UART_C7816_ANACK_MASK)| \
/* ..... */ CLR(UART_C7816_INIT_MASK)|CLR(UART_C7816_TTYPE_MASK)| \
/* ..... */ CLR(UART_C7816_ISO_7816E_MASK), \
/* IE7816 */ CLR(UART_IE7816_WTE_MASK)|CLR(UART_IE7816_CWTE_MASK)| \
/* ...... */ CLR(UART_IE7816_BWTE_MASK)|CLR(UART_IE7816_INITDE_MASK)| \
/* ...... */ CLR(UART_IE7816_GTVE_MASK)|CLR(UART_IE7816_TXTE_MASK)| \
/* ...... */ CLR(UART_IE7816_RXTE_MASK), \
/* IS7816 */ CLR(UART_IS7816_WT_MASK)|CLR(UART_IS7816_CWT_MASK)| \
/* ...... */ CLR(UART_IS7816_BWT_MASK)|CLR(UART_IS7816_INITD_MASK)| \
/* ...... */ CLR(UART_IS7816_GTV_MASK)|CLR(UART_IS7816_TXT_MASK)| \
/* ...... */ CLR(UART_IS7816_RXT_MASK), \
/* WP7816T0 */ SET(UART_WP7816_T_TYPE0_WI(0x0a)), \
/* WP7816T1 */ SET(UART_WP7816_T_TYPE1_CWI(0x00))| \
/* ........ */ SET(UART_WP7816_T_TYPE1_BWI(0x0a)), \
/* WN7816 */ SET(UART_WN7816_GTN(0x00)), \
/* WF7816 */ SET(UART_WF7816_GTFD(0x00)), \
/* ET7816 */ SET(UART_ET7816_TXTHRESHOLD(0x00))| \
/* ...... */ SET(UART_ET7816_RXTHRESHOLD(0x00)), \
/* TL7816 */ SET(UART_TL7816_TLEN(0x00)) \
}
Hi Raja M,
Please check snippet below. 7 bit data is not supported, you can only set 8 or 9 bit data by setting M bit in the UART_C1 register.
Have a great day,
Felipe
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
May it will support (7E1)7 bit data,1parity and 1stop bit
UART_C1 register - if i enable SET(UART_C1_PE_MASK) ,7E1 should work but for me not working why? any other configuration need?
Hi Raja,
By checking your code above I see you are not setting Parity Enable bit in the in the UART configuration.
Could you please try as below?
#define UART_MODULE_INTRMODE_CONFIG(brate,bclk) \
(tUART){ \
/* BDH */ CLR(UART_BDH_RXEDGIE_MASK)|((CALC_SBR(brate,bclk)>>8)&0x1f), \
/* BDL */ ((CALC_SBR(brate,bclk)>>0)&0xff), \
/* C1 */ CLR(UART_C1_LOOPS_MASK)|CLR(UART_C1_RSRC_MASK)| \
/* .. */ CLR(UART_C1_M_MASK)|CLR(UART_C1_WAKE_MASK)| \
/* .. */ CLR(UART_C1_ILT_MASK)|SET(UART_C1_PE_MASK)| \
/* .. */ CLR(UART_C1_PT_MASK), \
/* C2 */ CLR(UART_C2_TIE_MASK)|CLR(UART_C2_TCIE_MASK)| \ ...
...
Hope it helps!
Best regards,
Felipe
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
SET(UART_C1_PE_MASK)
you this options checked please let me any other option
void OpticalEventHandler(UART_CALLBACK_SRC module, UART_CALLBACK_TYPE type, int8 status)
{
vuint8 ucRxData,temp;
if(type==RX_CALLBACK)
{
if(OPTICAL_RXDATAREG_FLAG())
{
Optical_Rx_timeout = 0;
//OPTICAL_CLEAR_RXFUL_FLAG;
ucRxData = OPTICAL_DATA_REGISTER();
if (OpticalPacketReceptionInProgress == 1)
{
Optical_RX_cnt+=1;
OPTICAL_RX_BUF[Optical_RX_cnt] = ucRxData;
}
#if DLMSHDLC_ENABLE == ENABLE
else if((ucRxData == 0x7E)||(ucRxData == '/') )
#else
else if((ucRxData == FRAME_HEADER_START) || (ucRxData == START_CHAR) || (ucRxData == 0x00)||(ucRxData == 0x01))
#endif
{
Optical_RX_cnt = 0;
OPTICAL_RX_BUF[Optical_RX_cnt] = ucRxData;
OpticalPacketReceptionInProgress = 1;
}
}
}
else if(type==TX_CALLBACK)
{
if(Optical_TX_cnt >= Optical_TX_len)
{
OPTICAL_DISABLE_TXINT();
//OPTICAL_ENABLE_RXINT();
OpticalPacketTxInProgress = 0;
Optical_TX_cnt = 0;
#if (ADE7878_MODBUS == ACTIVE)
RTUTx_flag =0;
#endif
return;
}
UART3_D = OPTICAL_TX_BUF[Optical_TX_cnt];
Optical_Tx_timeout = 0;
Optical_TX_cnt+=1;
}
}
#define UART_MODULE_INTRMODE_CONFIG(brate,bclk) \
(tUART){ \
/* BDH */ CLR(UART_BDH_RXEDGIE_MASK)|((CALC_SBR(brate,bclk)>>8)&0x1f), \
/* BDL */ ((CALC_SBR(brate,bclk)>>0)&0xff), \
/* C1 */ CLR(UART_C1_LOOPS_MASK)|CLR(UART_C1_RSRC_MASK)| \
/* .. */ CLR(UART_C1_M_MASK)|CLR(UART_C1_WAKE_MASK)| \
/* .. */ CLR(UART_C1_ILT_MASK)|SET(UART_C1_PE_MASK)| \
/* .. */ CLR(UART_C1_PT_MASK), \
/* C2 */ CLR(UART_C2_TIE_MASK)|CLR(UART_C2_TCIE_MASK)| \
/* .. */ SET(UART_C2_RIE_MASK)|CLR(UART_C2_ILIE_MASK)| \
/* .. */ SET(UART_C2_TE_MASK)|SET(UART_C2_RE_MASK)| \
/* .. */ CLR(UART_C2_RWU_MASK)|CLR(UART_C2_SBK_MASK), \
/* S2 */ CLR(UART_S2_RXEDGIF_MASK)|CLR(UART_S2_MSBF_MASK)| \
/* .. */ CLR(UART_S2_RXINV_MASK)|CLR(UART_S2_RWUID_MASK)| \
/* .. */ CLR(UART_S2_BRK13_MASK), \
/* C3 */ CLR(UART_C3_T8_MASK)|CLR(UART_C3_TXDIR_MASK)| \
/* .. */ CLR(UART_C3_TXINV_MASK)|CLR(UART_C3_ORIE_MASK)| \
/* .. */ CLR(UART_C3_NEIE_MASK)|CLR(UART_C3_FEIE_MASK)| \
/* .. */ CLR(UART_C3_PEIE_MASK), \
/* MA1 */ SET(UART_MA1_MA(0x00)), \
/* MA2 */ SET(UART_MA2_MA(0x00)), \
/* C4 */ CLR(UART_C4_MAEN1_MASK)|CLR(UART_C4_MAEN2_MASK)| \
/* .. */ CLR(UART_C4_M10_MASK)|((CALC_BRFA(brate,bclk)>>0)&0x1f), \
/* C5 */ CLR(UART_C5_TDMAS_MASK)|CLR(UART_C5_RDMAS_MASK), \
/* C7816 */ CLR(UART_C7816_ONACK_MASK)|CLR(UART_C7816_ANACK_MASK)| \
/* ..... */ CLR(UART_C7816_INIT_MASK)|CLR(UART_C7816_TTYPE_MASK)| \
/* ..... */ CLR(UART_C7816_ISO_7816E_MASK), \
/* IE7816 */ CLR(UART_IE7816_WTE_MASK)|CLR(UART_IE7816_CWTE_MASK)| \
/* ...... */ CLR(UART_IE7816_BWTE_MASK)|CLR(UART_IE7816_INITDE_MASK)| \
/* ...... */ CLR(UART_IE7816_GTVE_MASK)|CLR(UART_IE7816_TXTE_MASK)| \
/* ...... */ CLR(UART_IE7816_RXTE_MASK), \
/* IS7816 */ CLR(UART_IS7816_WT_MASK)|CLR(UART_IS7816_CWT_MASK)| \
/* ...... */ CLR(UART_IS7816_BWT_MASK)|CLR(UART_IS7816_INITD_MASK)| \
/* ...... */ CLR(UART_IS7816_GTV_MASK)|CLR(UART_IS7816_TXT_MASK)| \
/* ...... */ CLR(UART_IS7816_RXT_MASK), \
/* WP7816T0 */ SET(UART_WP7816_T_TYPE0_WI(0x0a)), \
/* WP7816T1 */ SET(UART_WP7816_T_TYPE1_CWI(0x00))| \
/* ........ */ SET(UART_WP7816_T_TYPE1_BWI(0x0a)), \
/* WN7816 */ SET(UART_WN7816_GTN(0x00)), \
/* WF7816 */ SET(UART_WF7816_GTFD(0x00)), \
/* ET7816 */ SET(UART_ET7816_TXTHRESHOLD(0x00))| \
/* ...... */ SET(UART_ET7816_RXTHRESHOLD(0x00)), \
/* TL7816 */ SET(UART_TL7816_TLEN(0x00)) \
}
Hi Raja M,
Could you please try one of our examples and modify the SET(UART_C1_PE_MASK) register?
You can find the examples in the following link:
https://www.nxp.com/downloads/en/lab-test-software/TWR-KM34_DEMO_SW.zip
Are you configuring the terminal to receive the parity correctly?
Please let me know your findings.
Best regards,
Felipe
Hi Raja M,
Please accept my apologies for the late reply. I did the following testing to work with 7 bits data and odd parity and it worked well.
I am using TWR-KM34Z50MMV3 board (KM34Z128 MCU same as yours) and I used the uartisr_test example you can download from https://www.nxp.com/downloads/en/lab-test-software/TWR-KM34_DEMO_SW.zip
I modified this example by configuring UART_C1[PE] | UART_C1[PT]. This were the only changes I made, please see attached the modified header file.
I configured the serial term as follows:
Using this I got the following behavior:
As you can see TX and RX worked correctly with 7 bits data and odd parity.
I hope this helps you.
Best regards,
Felipe
Dear Felipe García
This option enable and checked please let me know any other option
Thanks and Regards
Raja M
Dept : product and Development
Direct: 91 0471 2477510 | Cell: +91 9790896978
raja_m@cms.co.in | Web: www.cms.co.in