Added uart.alt(n) to swap to use alternate rx/tx lines.
if n = 0 -> std pinout. if n != 0 -> alternate pinout (gpio13 and gpio15)
This commit is contained in:
parent
33e41a633e
commit
b2345857e9
|
@ -21,6 +21,10 @@
|
||||||
#ifndef FUNC_U0RXD
|
#ifndef FUNC_U0RXD
|
||||||
#define FUNC_U0RXD 0
|
#define FUNC_U0RXD 0
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef FUNC_U0CTS
|
||||||
|
#define FUNC_U0CTS 4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// For event signalling
|
// For event signalling
|
||||||
static uint8 task = USER_TASK_PRIO_MAX;
|
static uint8 task = USER_TASK_PRIO_MAX;
|
||||||
|
@ -75,6 +79,39 @@ uart_config(uint8 uart_no)
|
||||||
SET_PERI_REG_MASK(UART_INT_ENA(uart_no), UART_RXFIFO_FULL_INT_ENA);
|
SET_PERI_REG_MASK(UART_INT_ENA(uart_no), UART_RXFIFO_FULL_INT_ENA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* FunctionName : uart0_alt
|
||||||
|
* Description : Internal used function
|
||||||
|
* UART0 pins changed to 13,15 if 'on' is set, else set to normal pins
|
||||||
|
* Parameters : on - 1 = use alternate pins, 0 = use normal pins
|
||||||
|
* Returns : NONE
|
||||||
|
*******************************************************************************/
|
||||||
|
void ICACHE_FLASH_ATTR
|
||||||
|
uart0_alt(uint8 on)
|
||||||
|
{
|
||||||
|
if (on)
|
||||||
|
{
|
||||||
|
PIN_PULLUP_DIS(PERIPHS_IO_MUX_MTDO_U);
|
||||||
|
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_U0RTS);
|
||||||
|
PIN_PULLUP_EN(PERIPHS_IO_MUX_MTCK_U);
|
||||||
|
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_U0CTS);
|
||||||
|
// now make RTS/CTS behave as TX/RX
|
||||||
|
IOSWAP |= (1 << IOSWAPU0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PIN_PULLUP_DIS(PERIPHS_IO_MUX_U0TXD_U);
|
||||||
|
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD);
|
||||||
|
PIN_PULLUP_EN(PERIPHS_IO_MUX_U0RXD_U);
|
||||||
|
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_U0RXD);
|
||||||
|
// now make RX/TX behave as TX/RX
|
||||||
|
IOSWAP &= ~(1 << IOSWAPU0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* FunctionName : uart_tx_one_char
|
* FunctionName : uart_tx_one_char
|
||||||
* Description : Internal used function
|
* Description : Internal used function
|
||||||
|
|
|
@ -102,6 +102,7 @@ typedef struct {
|
||||||
} UartDevice;
|
} UartDevice;
|
||||||
|
|
||||||
void uart_init(UartBautRate uart0_br, UartBautRate uart1_br, uint8 task_prio, os_signal_t sig_input);
|
void uart_init(UartBautRate uart0_br, UartBautRate uart1_br, uint8 task_prio, os_signal_t sig_input);
|
||||||
|
void uart0_alt(uint8 on);
|
||||||
void uart0_sendStr(const char *str);
|
void uart0_sendStr(const char *str);
|
||||||
void uart0_putc(const char c);
|
void uart0_putc(const char c);
|
||||||
void uart0_tx_buffer(uint8 *buf, uint16 len);
|
void uart0_tx_buffer(uint8 *buf, uint16 len);
|
||||||
|
|
|
@ -125,4 +125,17 @@
|
||||||
|
|
||||||
#define UART_DATE( i ) (REG_UART_BASE( i ) + 0x78)
|
#define UART_DATE( i ) (REG_UART_BASE( i ) + 0x78)
|
||||||
#define UART_ID( i ) (REG_UART_BASE( i ) + 0x7C)
|
#define UART_ID( i ) (REG_UART_BASE( i ) + 0x7C)
|
||||||
|
|
||||||
|
#define ESP8266_DREG(addr) *((volatile uint32_t *)(0x3FF00000+(addr)))
|
||||||
|
|
||||||
|
//IO SWAP Register
|
||||||
|
#define IOSWAP ESP8266_DREG(0x28)
|
||||||
|
#define IOSWAPU 0 //Swaps UART
|
||||||
|
#define IOSWAPS 1 //Swaps SPI
|
||||||
|
#define IOSWAPU0 2 //Swaps UART 0 pins (u0rxd <-> u0cts), (u0txd <-> u0rts)
|
||||||
|
#define IOSWAPU1 3 //Swaps UART 1 pins (u1rxd <-> u1cts), (u1txd <-> u1rts)
|
||||||
|
#define IOSWAPHS 5 //Sets HSPI with higher prio
|
||||||
|
#define IOSWAP2HS 6 //Sets Two SPI Masters on HSPI
|
||||||
|
#define IOSWAP2CS 7 //Sets Two SPI Masters on CSPI
|
||||||
|
|
||||||
#endif // UART_REGISTER_H_INCLUDED
|
#endif // UART_REGISTER_H_INCLUDED
|
||||||
|
|
|
@ -116,6 +116,17 @@ static int uart_setup( lua_State* L )
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lua: alt( set )
|
||||||
|
static int uart_alt( lua_State* L )
|
||||||
|
{
|
||||||
|
unsigned set;
|
||||||
|
|
||||||
|
set = luaL_checkinteger( L, 1 );
|
||||||
|
|
||||||
|
platform_uart_alt( set );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Lua: write( id, string1, [string2], ..., [stringn] )
|
// Lua: write( id, string1, [string2], ..., [stringn] )
|
||||||
static int uart_write( lua_State* L )
|
static int uart_write( lua_State* L )
|
||||||
{
|
{
|
||||||
|
@ -154,6 +165,8 @@ const LUA_REG_TYPE uart_map[] =
|
||||||
{ LSTRKEY( "setup" ), LFUNCVAL( uart_setup ) },
|
{ LSTRKEY( "setup" ), LFUNCVAL( uart_setup ) },
|
||||||
{ LSTRKEY( "write" ), LFUNCVAL( uart_write ) },
|
{ LSTRKEY( "write" ), LFUNCVAL( uart_write ) },
|
||||||
{ LSTRKEY( "on" ), LFUNCVAL( uart_on ) },
|
{ LSTRKEY( "on" ), LFUNCVAL( uart_on ) },
|
||||||
|
{ LSTRKEY( "alt" ), LFUNCVAL( uart_alt ) },
|
||||||
|
|
||||||
#if LUA_OPTIMIZE_MEMORY > 0
|
#if LUA_OPTIMIZE_MEMORY > 0
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -251,6 +251,14 @@ uint32_t platform_uart_setup( unsigned id, uint32_t baud, int databits, int pari
|
||||||
return baud;
|
return baud;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if set=1, then alternate serial output pins are used. (15=rx, 13=tx)
|
||||||
|
void platform_uart_alt( int set )
|
||||||
|
{
|
||||||
|
uart0_alt( set );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Send: version with and without mux
|
// Send: version with and without mux
|
||||||
void platform_uart_send( unsigned id, u8 data )
|
void platform_uart_send( unsigned id, u8 data )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue