This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has submitted this change. ( https://gerrit.osmocom.org/c/simtrace2/+/24521 ) Change subject: octsimtest: Switch direction of I/O level shifter depending on uart tx / rx ...................................................................... octsimtest: Switch direction of I/O level shifter depending on uart tx / rx Contrary to other hardware designs, octsimtest has a level-shifter in the I/O line to support testing with 1.8, 3 and 5V. This level shifter is bi-directional, but the direction needs to be explicitly specified via the SIM_IO_DIR signal attached to PA26. Change-Id: I44171363b5bd69d6049b12c86f8143be83557cb2 --- M firmware/libboard/octsimtest/include/board.h M firmware/libcommon/source/mode_cardemu.c 2 files changed, 23 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/firmware/libboard/octsimtest/include/board.h b/firmware/libboard/octsimtest/include/board.h index 6006796..361c180 100644 --- a/firmware/libboard/octsimtest/include/board.h +++ b/firmware/libboard/octsimtest/include/board.h @@ -62,8 +62,10 @@ #define PIN_PHONE_IO {PIO_PA22A_TXD1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT} /* Phone CLK clock input (CLK_PHONE in schematic) */ #define PIN_PHONE_CLK {PIO_PA23A_SCK1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT} +/* Pin used to switch level shifter in I/O line between rx (0) and tx (1) */ +#define PIN_USIM1_IO_DIR {PIO_PA16, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_OUTPUT_0} /* Pin used for phone USIM slot 1 communication */ -#define PINS_USIM1 PIN_PHONE_IO, PIN_PHONE_CLK, PIN_PHONE_CLK_INPUT, PIN_USIM1_VCC, PIN_PHONE_IO_INPUT, PIN_USIM1_nRST +#define PINS_USIM1 PIN_PHONE_IO, PIN_PHONE_CLK, PIN_PHONE_CLK_INPUT, PIN_USIM1_VCC, PIN_PHONE_IO_INPUT, PIN_USIM1_nRST, PIN_USIM1_IO_DIR /* Phone I/O data signal input/output (unused USART RX input; connected to I/O_PHONE in schematic) */ #define PIN_PHONE_IO_INPUT {PIO_PA21A_RXD1, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT} /* Pin used as clock input (to measure the ETU duration; connected to CLK_PHONE in schematic) */ diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c index 127556c..604c66a 100644 --- a/firmware/libcommon/source/mode_cardemu.c +++ b/firmware/libcommon/source/mode_cardemu.c @@ -42,6 +42,10 @@ static const Pin pins_usim1[] = {PINS_USIM1}; static const Pin pin_usim1_rst = PIN_USIM1_nRST; static const Pin pin_usim1_vcc = PIN_USIM1_VCC; +#ifdef PIN_USIM1_IO_DIR +static const Pin pin_io_dir = PIN_USIM1_IO_DIR; +#endif + #ifdef CARDEMU_SECOND_UART static const Pin pins_usim2[] = {PINS_USIM2}; @@ -142,12 +146,27 @@ wait_tx_idle(usart); } +static void card_emu_uart_set_direction(uint8_t uart_chan, bool tx) +{ + /* only on some boards (octsimtest) we hae an external level + * shifter that requires us to switch the direction between RX and TX */ +#ifdef PIN_USIM1_IO_DIR + if (uart_chan == 0) { + if (tx) + PIO_Set(&pin_io_dir); + else + PIO_Clear(&pin_io_dir); + } +#endif +} + /* call-back from card_emu.c to enable/disable transmit and/or receive */ void card_emu_uart_enable(uint8_t uart_chan, uint8_t rxtx) { Usart *usart = get_usart_by_chan(uart_chan); switch (rxtx) { case ENABLE_TX: + card_emu_uart_set_direction(uart_chan, true); USART_DisableIt(usart, ~(US_IER_TXRDY | US_IER_TIMEOUT)); /* as irritating as it is, we actually want to keep the * receiver enabled during transmit */ @@ -173,6 +192,7 @@ * transmitter enabled during receive */ USART_SetTransmitterEnabled(usart, 1); wait_tx_idle(usart); + card_emu_uart_set_direction(uart_chan, false);; usart->US_CR = US_CR_RSTSTA | US_CR_RSTIT | US_CR_RSTNACK; USART_EnableIt(usart, US_IER_RXRDY); USART_SetReceiverEnabled(usart, 1); -- To view, visit https://gerrit.osmocom.org/c/simtrace2/+/24521 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: simtrace2 Gerrit-Branch: master Gerrit-Change-Id: I44171363b5bd69d6049b12c86f8143be83557cb2 Gerrit-Change-Number: 24521 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge at osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210603/b680a5fe/attachment.htm>