2009-05-19 07:17 PM
Smartcard mode
2011-05-17 03:37 AM
Hi,
I have a problem to receive data on USART3 when using the smartcard mode. IO line is connected to Port B.10. I put USART3 into smartcard mode and I can send data via TX interrupt. The card responds to my message but incomming data it is not recognised by the reciever. Meanning, that the flag RXNE remains low, even though RX interrupt is enabled, and port is configured to alternate-open drain. What am I missing? Any suggestion? Thanks, Ari2011-05-17 03:37 AM
Hi Ari_v,
I presume that you have to configure USART Rx Line as ''Input Floating'' as it is used for reception. /* Configure USART3 Rx (PB.11) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); Cheers, ST1 :)2011-05-17 03:37 AM
Thanks for reply.
I probably didn't explain enough. The smartcard mode is used so PB.10 is used as bidirectional port, also for the RX. Therefore, the RX (PB.11) is used as regular GPIO. Some more details: IO line is connected to Port B.10 – port is configured to alternate-open drain. USART3 is put into smartcard mode. USART3 RX ant TX interrupts is enabled. Data is sent properly to via TX interrupt. And then TX interrupt is disabled. The card responds as expected to my message. (With the same setting as outgoing message in terms of baud rate, 8 data bits, 1 stop bit, no parity). ... This leads me to the conclusion that USART3 is put properly into smartcard mode… USART3 does not recognize the incoming data, meaning that the flag RXNE remains low. What am I missing? BTW, the reference manual mentions: ''… SW_RX must be connected on the same I/O than TX at product level''. I understand that configuring the USART to smartcard mode covers this issue. Is this correct? Thanks, Ari2011-05-17 03:37 AM
Hi,
It seems to me that smart card IO needs to be connected only to the TX pin, and this pin functions as a bidirectional uart when put in to smartcard mode. Could anyone confirm that RX and TX need to be tied in smartcard mode? Thanks, Ari2011-05-17 03:37 AM
From latest version of RM0008:
''To do so, SW_RX must be connected on the same I/O than TX at product level.'' Due to your inability to receive - I wonder if this statement means that you must tie PB10 and PB11 together? (don't see ''how'' PB10 can be ''forced'' into a receive mode) Also note that during receive you must configure for 0.5 Stop Bits. (this all theory - haven't this hardware) Good luck - plz post your outcome...2011-05-17 03:37 AM
Hi,
I posted my question regarding smartcard mode to ST support and i recieved the following: ================================ => yes this is correct. This is done at product level once the smart card mode is enabled this is the RX and TX are connected internally, the user does not have to connect by hardware SW_RX to TX. We confirm only the TX is used for smart card IO and should be configured as alternate open drain. The PB.11 RX pin can be used as normal GPIO. Customer may check his hardware. I would suggest to refer to the Smart card Application note (AN2598 in attachment) as software and hardware guideline. ================================ I still have the problem to collect incomming data from smartcard. I can see on scope data comming in from smartcard on the TX_RX pin (PB.10), but RXNE flag does not rise... as though UART ''thinks'' that he is in transmit mode. If anyone has an insite, I'll be happy to hear! Thanks, Ari2011-05-17 03:37 AM
Hi Ari,
Have a look at :http://www.st.com/stonline/products/literature/an/13750.pdf
http://www.st.com/stonline/products/support/micro/files/an2598.zip
then Go to ''Smartcard_AN/source'' subfolder and finally to ''smartcard.c'' file. Regards, Magigimix2011-05-17 03:37 AM
Hello Ari,
I have the same problem on an STR71xxx. Did you solve the above mentioned problem with the smartcard? If yes, please let me know how. Thanks Alex2011-05-17 03:37 AM
Refer DOC13902 STM32 reference manual 24.3.10 smartcard,
''In Smartcard mode an EMPTY transmit shift register triggers the guard time counter to count up to the programmed value in the Guard Time register.'' So you should fine tune your Guard Time register to fit your card. The AN2598 sets to 16. This is not suitable for each type of cards. The value is depend on how fast your card can endurance and response. Too much Guard Time value will eat your RX data actually. Mark