LCD implemented.
This commit is contained in:
parent
89ec94445c
commit
d37193490a
|
@ -1,3 +1,6 @@
|
|||
[submodule "SDK"]
|
||||
path = SDK
|
||||
url = https://git.minori.work/Embedded_SDK/MCUXpresso_MK60DN512xxx10.git
|
||||
[submodule "lib/lcd"]
|
||||
path = lib/lcd
|
||||
url = https://github.com/imi415/epd-spi.git
|
||||
|
|
|
@ -59,6 +59,7 @@ set(TARGET_SOURCES
|
|||
"board/clock_config.c"
|
||||
"board/peripherals.c"
|
||||
"board/pin_mux.c"
|
||||
"src/lcd_impl.c"
|
||||
"src/main.c"
|
||||
"src/system_utilities.c"
|
||||
)
|
||||
|
@ -79,7 +80,7 @@ set(TARGET_C_INCLUDES
|
|||
|
||||
# Shared libraries linked with application
|
||||
set(TARGET_LIBS
|
||||
|
||||
"epd-spi"
|
||||
)
|
||||
|
||||
# Shared library and linker script search paths
|
||||
|
@ -108,6 +109,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TARGET_CFLAGS_HARDWARE} -Wall -
|
|||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CMAKE_C_FLAGS} -x assembler-with-cpp")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -Wl,--print-memory-usage -lc -lm -lnosys ")
|
||||
|
||||
add_subdirectory(lib/lcd)
|
||||
|
||||
# Shared sources, includes and definitions
|
||||
add_compile_definitions(${TARGET_C_DEFINES})
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
<processor_version>11.0.1</processor_version>
|
||||
<pin_labels>
|
||||
<pin_label pin_num="58" pin_signal="PTA6/FTM0_CH3/TRACE_CLKOUT" label="BUZZER" identifier="BUZZER"/>
|
||||
<pin_label pin_num="106" pin_signal="CMP1_IN1/PTC3/LLWU_P7/SPI0_PCS1/UART1_RX/FTM0_CH2/CLKOUT/I2S0_TX_BCLK" label="TFT_BL" identifier="BL;TFT_BL"/>
|
||||
<pin_label pin_num="126" pin_signal="PTC19/UART3_CTS_b/ENET0_1588_TMR3/FB_CS3_b/FB_BE7_0_b/FB_TA_b" label="TFT_RESET" identifier="TFT_RESET"/>
|
||||
</pin_labels>
|
||||
</pins_profile>
|
||||
<functions_list>
|
||||
|
@ -127,6 +129,18 @@
|
|||
<pin peripheral="ENET" signal="RMII_CRS_DV" pin_num="66" pin_signal="PTA14/SPI0_PCS0/UART0_TX/RMII0_CRS_DV/MII0_RXDV/I2S0_RX_BCLK/I2S0_TXD1"/>
|
||||
<pin peripheral="ENET" signal="rmii_txen" pin_num="67" pin_signal="PTA15/SPI0_SCK/UART0_RX/RMII0_TXEN/MII0_TXEN/I2S0_RXD0"/>
|
||||
<pin peripheral="ENET" signal="RMII_CLKIN" pin_num="72" pin_signal="EXTAL0/PTA18/FTM0_FLT2/FTM_CLKIN0"/>
|
||||
<pin peripheral="GPIOC" signal="GPIO, 3" pin_num="106" pin_signal="CMP1_IN1/PTC3/LLWU_P7/SPI0_PCS1/UART1_RX/FTM0_CH2/CLKOUT/I2S0_TX_BCLK">
|
||||
<pin_features>
|
||||
<pin_feature name="identifier" value="TFT_BL"/>
|
||||
<pin_feature name="direction" value="OUTPUT"/>
|
||||
<pin_feature name="gpio_init_state" value="false"/>
|
||||
</pin_features>
|
||||
</pin>
|
||||
<pin peripheral="GPIOC" signal="GPIO, 19" pin_num="126" pin_signal="PTC19/UART3_CTS_b/ENET0_1588_TMR3/FB_CS3_b/FB_BE7_0_b/FB_TA_b">
|
||||
<pin_features>
|
||||
<pin_feature name="direction" value="OUTPUT"/>
|
||||
</pin_features>
|
||||
</pin>
|
||||
</pins>
|
||||
</function>
|
||||
</functions_list>
|
||||
|
@ -526,11 +540,11 @@
|
|||
<setting name="autoAcknowledge" value="true"/>
|
||||
<setting name="extendTransferAddress" value="false"/>
|
||||
<setting name="byteLaneShift" value="kFLEXBUS_NotShifted"/>
|
||||
<setting name="portSize" value="kFLEXBUS_1Byte"/>
|
||||
<setting name="writeAddressHold" value="kFLEXBUS_Hold1Cycle"/>
|
||||
<setting name="portSize" value="kFLEXBUS_2Bytes"/>
|
||||
<setting name="writeAddressHold" value="kFLEXBUS_Hold2Cycles"/>
|
||||
<setting name="readAddressHold" value="kFLEXBUS_Hold1Or0Cycles"/>
|
||||
<setting name="addressSetup" value="kFLEXBUS_FirstRisingEdge"/>
|
||||
<setting name="waitStates" value="0"/>
|
||||
<setting name="addressSetup" value="kFLEXBUS_SecondRisingEdge"/>
|
||||
<setting name="waitStates" value="6"/>
|
||||
<setting name="burstWrite" value="false"/>
|
||||
<setting name="burstRead" value="false"/>
|
||||
<setting name="writeProtect" value="false"/>
|
||||
|
|
2
SDK
2
SDK
|
@ -1 +1 @@
|
|||
Subproject commit d22b5f5974384786fbc1488f395c3af984a4c466
|
||||
Subproject commit ede33dcf057746da396088a4d9dcea87b02f3b25
|
|
@ -28,10 +28,13 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "board.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "fsl_common.h"
|
||||
#include "fsl_debug_console.h"
|
||||
#include "board.h"
|
||||
#include "fsl_rtc.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
|
@ -41,9 +44,23 @@
|
|||
* Code
|
||||
******************************************************************************/
|
||||
/* Initialize debug console. */
|
||||
void BOARD_InitDebugConsole(void)
|
||||
{
|
||||
void BOARD_InitDebugConsole(void) {
|
||||
uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ;
|
||||
|
||||
DbgConsole_Init(BOARD_DEBUG_UART_BASEADDR, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq);
|
||||
}
|
||||
|
||||
void BOARD_EnableRTC(void) {
|
||||
rtc_config_t rtc_config;
|
||||
|
||||
RTC_GetDefaultConfig(&rtc_config);
|
||||
|
||||
RTC_Init(RTC, &rtc_config);
|
||||
|
||||
RTC->SR |= RTC_SR_TCE_MASK;
|
||||
}
|
||||
|
||||
void BOARD_EnableLCD(void) {
|
||||
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 1U);
|
||||
GPIO_WritePinOutput(BOARD_INITPINS_TFT_BL_GPIO, BOARD_INITPINS_TFT_BL_PIN, 1U);
|
||||
}
|
126
board/board.h
126
board/board.h
|
@ -32,13 +32,14 @@
|
|||
#define _BOARD_H_
|
||||
|
||||
#include "clock_config.h"
|
||||
#include "pin_mux.h"
|
||||
#include "fsl_gpio.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
/*! @brief The board name */
|
||||
#define BOARD_NAME "TWR-K60D100M"
|
||||
#define BOARD_NAME "Landzo-K60"
|
||||
|
||||
/*! @brief The UART to use for debug messages. */
|
||||
#define BOARD_USE_UART
|
||||
|
@ -53,127 +54,6 @@
|
|||
#define BOARD_DEBUG_UART_BAUDRATE 115200
|
||||
#endif /* BOARD_DEBUG_UART_BAUDRATE */
|
||||
|
||||
/*! @brief The CAN instance used for board */
|
||||
#define BOARD_CAN_BASEADDR CAN1
|
||||
|
||||
/*! @brief The i2c instance used for i2c connection by default */
|
||||
#define BOARD_I2C_BASEADDR I2C0
|
||||
|
||||
/*! @brief The Enet instance used for board */
|
||||
#define BOARD_ENET_BASEADDR ENET
|
||||
|
||||
/*! @brief The FlexBus instance used for board.*/
|
||||
#define BOARD_FLEXBUS_BASEADDR FB
|
||||
|
||||
#define BOARD_TSI_ELECTRODE_CNT 4U
|
||||
|
||||
/*! @brief Indexes of the TSI channels for on board electrodes */
|
||||
#define BOARD_TSI_ELECTRODE_1 5U
|
||||
#define BOARD_TSI_ELECTRODE_2 8U
|
||||
#define BOARD_TSI_ELECTRODE_3 7U
|
||||
#define BOARD_TSI_ELECTRODE_4 9U
|
||||
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_0 0U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_1 6U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_2 7U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_3 8U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_4 13U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_5 14U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_6 15U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_7 5U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_8 9U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_9 10U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_10 11U
|
||||
#define BOARD_TSI_TWRPI_ELECTRODE_11 12U
|
||||
|
||||
/*! @brief ADC TWRPI ID input channel */
|
||||
#define BOARD_ADC_TWRPIID0_CHANNEL 1U
|
||||
#define BOARD_ADC_TWRPIID1_CHANNEL 16U
|
||||
#define BOARD_ADC_TWRPI 1U
|
||||
|
||||
/*! @brief The SDHC instance/channel used for board */
|
||||
#define BOARD_SDHC_BASEADDR SDHC
|
||||
#define BOARD_SDHC_CD_GPIO_IRQ_HANDLER PORTE_IRQHandler
|
||||
|
||||
/*! @brief The CMP instance/channel used for board. */
|
||||
#define BOARD_CMP_BASEADDR CMP0
|
||||
#define BOARD_CMP_CHANNEL 0U
|
||||
|
||||
/*! @brief The i2c instance used for sai demo */
|
||||
#define BOARD_SAI_DEMO_I2C_BASEADDR I2C0
|
||||
|
||||
/*! @brief The rtc instance used for rtc_func */
|
||||
#define BOARD_RTC_FUNC_BASEADDR RTC
|
||||
|
||||
/* Board led color mapping */
|
||||
#define LOGIC_LED_ON 0U
|
||||
#define LOGIC_LED_OFF 1U
|
||||
#define BOARD_LED_ORANGE_GPIO GPIOA
|
||||
#define BOARD_LED_ORANGE_GPIO_PORT PORTA
|
||||
#define BOARD_LED_ORANGE_GPIO_PIN 11U
|
||||
#define BOARD_LED_YELLOW_GPIO GPIOA
|
||||
#define BOARD_LED_YELLOW_GPIO_PORT PORTA
|
||||
#define BOARD_LED_YELLOW_GPIO_PIN 28U
|
||||
#define BOARD_LED_GREEN_GPIO GPIOA
|
||||
#define BOARD_LED_GREEN_GPIO_PORT PORTA
|
||||
#define BOARD_LED_GREEN_GPIO_PIN 29U
|
||||
#define BOARD_LED_BLUE_GPIO GPIOA
|
||||
#define BOARD_LED_BLUE_GPIO_PORT PORTA
|
||||
#define BOARD_LED_BLUE_GPIO_PIN 10U
|
||||
|
||||
#define LED_ORANGE_INIT(output) \
|
||||
GPIO_WritePinOutput(BOARD_LED_ORANGE_GPIO, BOARD_LED_ORANGE_GPIO_PIN, output);\
|
||||
BOARD_LED_ORANGE_GPIO->PDDR |= (1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Enable target LED_ORANGE */
|
||||
#define LED_ORANGE_ON() \
|
||||
GPIO_ClearPinsOutput(BOARD_LED_ORANGE_GPIO, 1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Turn on target LED_ORANGE */
|
||||
#define LED_ORANGE_OFF() \
|
||||
GPIO_SetPinsOutput(BOARD_LED_ORANGE_GPIO, 1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Turn off target LED_ORANGE */
|
||||
#define LED_ORANGE_TOGGLE() \
|
||||
GPIO_TogglePinsOutput(BOARD_LED_ORANGE_GPIO, 1U << BOARD_LED_ORANGE_GPIO_PIN) /*!< Toggle on target LED_ORANGE */
|
||||
|
||||
#define LED_YELLOW_INIT(output) \
|
||||
GPIO_WritePinOutput(BOARD_LED_YELLOW_GPIO, BOARD_LED_YELLOW_GPIO_PIN, output);\
|
||||
BOARD_LED_YELLOW_GPIO->PDDR |= (1U << BOARD_LED_YELLOW_GPIO_PIN) /*!< Enable target LED_YELLOW */
|
||||
#define LED_YELLOW_ON() \
|
||||
GPIO_ClearPinsOutput(BOARD_LED_YELLOW_GPIO, 1U << BOARD_LED_YELLOW_GPIO_PIN) /*!< Turn on target LED_YELLOW */
|
||||
#define LED_YELLOW_OFF() \
|
||||
GPIO_SetPinsOutput(BOARD_LED_YELLOW_GPIO, 1U << BOARD_LED_YELLOW_GPIO_PIN) /*!< Turn off target LED_YELLOW */
|
||||
#define LED_YELLOW_TOGGLE() \
|
||||
GPIO_TogglePinsOutput(BOARD_LED_YELLOW_GPIO, 1U << BOARD_LED_YELLOW_GPIO_PIN) /*!< Toggle on target LED_YELLOW */
|
||||
|
||||
#define LED_GREEN_INIT(output) \
|
||||
GPIO_WritePinOutput(BOARD_LED_GREEN_GPIO, BOARD_LED_GREEN_GPIO_PIN, output);\
|
||||
BOARD_LED_GREEN_GPIO->PDDR |= (1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Enable target LED_GREEN */
|
||||
#define LED_GREEN_ON() \
|
||||
GPIO_ClearPinsOutput(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn on target LED_GREEN */
|
||||
#define LED_GREEN_OFF() \
|
||||
GPIO_SetPinsOutput(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Turn off target LED_GREEN */
|
||||
#define LED_GREEN_TOGGLE() \
|
||||
GPIO_TogglePinsOutput(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */
|
||||
|
||||
#define LED_BLUE_INIT(output) \
|
||||
GPIO_WritePinOutput(BOARD_LED_BLUE_GPIO, BOARD_LED_BLUE_GPIO_PIN, output);\
|
||||
BOARD_LED_BLUE_GPIO->PDDR |= (1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Enable target LED_BLUE */
|
||||
#define LED_BLUE_ON() \
|
||||
GPIO_ClearPinsOutput(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn on target LED_BLUE */
|
||||
#define LED_BLUE_OFF() \
|
||||
GPIO_SetPinsOutput(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Turn off target LED_BLUE */
|
||||
#define LED_BLUE_TOGGLE() \
|
||||
GPIO_TogglePinsOutput(BOARD_LED_BLUE_GPIO, 1U << BOARD_LED_BLUE_GPIO_PIN) /*!< Toggle on target LED_BLUE */
|
||||
|
||||
/* SDHC base address, clock and card detection pin */
|
||||
#define BOARD_SDHC_BASEADDR SDHC
|
||||
#define BOARD_SDHC_CLKSRC kCLOCK_CoreSysClk
|
||||
#define BOARD_SDHC_CLK_FREQ CLOCK_GetFreq(kCLOCK_CoreSysClk)
|
||||
#define BOARD_SDHC_IRQ SDHC_IRQn
|
||||
#define BOARD_SDHC_CD_GPIO_BASE GPIOE
|
||||
#define BOARD_SDHC_CD_GPIO_PIN 28U
|
||||
#define BOARD_SDHC_CD_PORT_BASE PORTE
|
||||
#define BOARD_SDHC_CD_PORT_IRQ PORTE_IRQn
|
||||
#define BOARD_SDHC_CD_PORT_IRQ_HANDLER PORTE_IRQHandler
|
||||
|
||||
#define BOARD_ACCEL_I2C_BASEADDR I2C0
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
@ -183,6 +63,8 @@ extern "C" {
|
|||
******************************************************************************/
|
||||
|
||||
void BOARD_InitDebugConsole(void);
|
||||
void BOARD_EnableRTC(void);
|
||||
void BOARD_EnableLCD(void);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
@ -105,11 +105,11 @@ instance:
|
|||
- autoAcknowledge: 'true'
|
||||
- extendTransferAddress: 'false'
|
||||
- byteLaneShift: 'kFLEXBUS_NotShifted'
|
||||
- portSize: 'kFLEXBUS_1Byte'
|
||||
- writeAddressHold: 'kFLEXBUS_Hold1Cycle'
|
||||
- portSize: 'kFLEXBUS_2Bytes'
|
||||
- writeAddressHold: 'kFLEXBUS_Hold2Cycles'
|
||||
- readAddressHold: 'kFLEXBUS_Hold1Or0Cycles'
|
||||
- addressSetup: 'kFLEXBUS_FirstRisingEdge'
|
||||
- waitStates: '0'
|
||||
- addressSetup: 'kFLEXBUS_SecondRisingEdge'
|
||||
- waitStates: '6'
|
||||
- burstWrite: 'false'
|
||||
- burstRead: 'false'
|
||||
- writeProtect: 'false'
|
||||
|
@ -149,11 +149,11 @@ flexbus_config_t FB_LCD_config = {
|
|||
.autoAcknowledge = true,
|
||||
.extendTransferAddress = false,
|
||||
.byteLaneShift = kFLEXBUS_NotShifted,
|
||||
.portSize = kFLEXBUS_1Byte,
|
||||
.writeAddressHold = kFLEXBUS_Hold1Cycle,
|
||||
.portSize = kFLEXBUS_2Bytes,
|
||||
.writeAddressHold = kFLEXBUS_Hold2Cycles,
|
||||
.readAddressHold = kFLEXBUS_Hold1Or0Cycles,
|
||||
.addressSetup = kFLEXBUS_FirstRisingEdge,
|
||||
.waitStates = 0U,
|
||||
.addressSetup = kFLEXBUS_SecondRisingEdge,
|
||||
.waitStates = 6U,
|
||||
.secondaryWaitStates = false,
|
||||
.burstWrite = false,
|
||||
.burstRead = false,
|
||||
|
|
|
@ -14,6 +14,8 @@ mcu_data: ksdk2_0
|
|||
processor_version: 11.0.1
|
||||
pin_labels:
|
||||
- {pin_num: '58', pin_signal: PTA6/FTM0_CH3/TRACE_CLKOUT, label: BUZZER, identifier: BUZZER}
|
||||
- {pin_num: '106', pin_signal: CMP1_IN1/PTC3/LLWU_P7/SPI0_PCS1/UART1_RX/FTM0_CH2/CLKOUT/I2S0_TX_BCLK, label: TFT_BL, identifier: BL;TFT_BL}
|
||||
- {pin_num: '126', pin_signal: PTC19/UART3_CTS_b/ENET0_1588_TMR3/FB_CS3_b/FB_BE7_0_b/FB_TA_b, label: TFT_RESET, identifier: TFT_RESET}
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
|
||||
*/
|
||||
/* clang-format on */
|
||||
|
@ -94,6 +96,9 @@ BOARD_InitPins:
|
|||
- {pin_num: '66', peripheral: ENET, signal: RMII_CRS_DV, pin_signal: PTA14/SPI0_PCS0/UART0_TX/RMII0_CRS_DV/MII0_RXDV/I2S0_RX_BCLK/I2S0_TXD1}
|
||||
- {pin_num: '67', peripheral: ENET, signal: rmii_txen, pin_signal: PTA15/SPI0_SCK/UART0_RX/RMII0_TXEN/MII0_TXEN/I2S0_RXD0}
|
||||
- {pin_num: '72', peripheral: ENET, signal: RMII_CLKIN, pin_signal: EXTAL0/PTA18/FTM0_FLT2/FTM_CLKIN0}
|
||||
- {pin_num: '106', peripheral: GPIOC, signal: 'GPIO, 3', pin_signal: CMP1_IN1/PTC3/LLWU_P7/SPI0_PCS1/UART1_RX/FTM0_CH2/CLKOUT/I2S0_TX_BCLK, identifier: TFT_BL,
|
||||
direction: OUTPUT, gpio_init_state: 'false'}
|
||||
- {pin_num: '126', peripheral: GPIOC, signal: 'GPIO, 19', pin_signal: PTC19/UART3_CTS_b/ENET0_1588_TMR3/FB_CS3_b/FB_BE7_0_b/FB_TA_b, direction: OUTPUT}
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
|
||||
*/
|
||||
/* clang-format on */
|
||||
|
@ -122,6 +127,20 @@ void BOARD_InitPins(void)
|
|||
/* Initialize GPIO functionality on pin PTA6 (pin 58) */
|
||||
GPIO_PinInit(BOARD_INITPINS_BUZZER_GPIO, BOARD_INITPINS_BUZZER_PIN, &BUZZER_config);
|
||||
|
||||
gpio_pin_config_t TFT_BL_config = {
|
||||
.pinDirection = kGPIO_DigitalOutput,
|
||||
.outputLogic = 0U
|
||||
};
|
||||
/* Initialize GPIO functionality on pin PTC3 (pin 106) */
|
||||
GPIO_PinInit(BOARD_INITPINS_TFT_BL_GPIO, BOARD_INITPINS_TFT_BL_PIN, &TFT_BL_config);
|
||||
|
||||
gpio_pin_config_t TFT_RESET_config = {
|
||||
.pinDirection = kGPIO_DigitalOutput,
|
||||
.outputLogic = 0U
|
||||
};
|
||||
/* Initialize GPIO functionality on pin PTC19 (pin 126) */
|
||||
GPIO_PinInit(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, &TFT_RESET_config);
|
||||
|
||||
/* PORTA12 (pin 64) is configured as RMII0_RXD1 */
|
||||
PORT_SetPinMux(PORTA, 12U, kPORT_MuxAlt4);
|
||||
|
||||
|
@ -230,9 +249,15 @@ void BOARD_InitPins(void)
|
|||
/* PORTC17 (pin 124) is configured as FB_CS4_b */
|
||||
PORT_SetPinMux(PORTC, 17U, kPORT_MuxAlt5);
|
||||
|
||||
/* PORTC19 (pin 126) is configured as PTC19 */
|
||||
PORT_SetPinMux(BOARD_INITPINS_TFT_RESET_PORT, BOARD_INITPINS_TFT_RESET_PIN, kPORT_MuxAsGpio);
|
||||
|
||||
/* PORTC2 (pin 105) is configured as FB_AD12 */
|
||||
PORT_SetPinMux(PORTC, 2U, kPORT_MuxAlt5);
|
||||
|
||||
/* PORTC3 (pin 106) is configured as PTC3 */
|
||||
PORT_SetPinMux(BOARD_INITPINS_TFT_BL_PORT, BOARD_INITPINS_TFT_BL_PIN, kPORT_MuxAsGpio);
|
||||
|
||||
/* PORTC4 (pin 109) is configured as FB_AD11 */
|
||||
PORT_SetPinMux(PORTC, 4U, kPORT_MuxAlt5);
|
||||
|
||||
|
|
|
@ -42,6 +42,32 @@ void BOARD_InitBootPins(void);
|
|||
#define BOARD_INITPINS_BUZZER_PIN_MASK (1U << 6U) /*!<@brief PORT pin mask */
|
||||
/* @} */
|
||||
|
||||
/*! @name PORTC3 (number 106), TFT_BL
|
||||
@{ */
|
||||
|
||||
/* Symbols to be used with GPIO driver */
|
||||
#define BOARD_INITPINS_TFT_BL_GPIO GPIOC /*!<@brief GPIO peripheral base pointer */
|
||||
#define BOARD_INITPINS_TFT_BL_GPIO_PIN_MASK (1U << 3U) /*!<@brief GPIO pin mask */
|
||||
|
||||
/* Symbols to be used with PORT driver */
|
||||
#define BOARD_INITPINS_TFT_BL_PORT PORTC /*!<@brief PORT peripheral base pointer */
|
||||
#define BOARD_INITPINS_TFT_BL_PIN 3U /*!<@brief PORT pin number */
|
||||
#define BOARD_INITPINS_TFT_BL_PIN_MASK (1U << 3U) /*!<@brief PORT pin mask */
|
||||
/* @} */
|
||||
|
||||
/*! @name PORTC19 (number 126), TFT_RESET
|
||||
@{ */
|
||||
|
||||
/* Symbols to be used with GPIO driver */
|
||||
#define BOARD_INITPINS_TFT_RESET_GPIO GPIOC /*!<@brief GPIO peripheral base pointer */
|
||||
#define BOARD_INITPINS_TFT_RESET_GPIO_PIN_MASK (1U << 19U) /*!<@brief GPIO pin mask */
|
||||
|
||||
/* Symbols to be used with PORT driver */
|
||||
#define BOARD_INITPINS_TFT_RESET_PORT PORTC /*!<@brief PORT peripheral base pointer */
|
||||
#define BOARD_INITPINS_TFT_RESET_PIN 19U /*!<@brief PORT pin number */
|
||||
#define BOARD_INITPINS_TFT_RESET_PIN_MASK (1U << 19U) /*!<@brief PORT pin mask */
|
||||
/* @} */
|
||||
|
||||
/*!
|
||||
* @brief Configures pin routing and optionally pin electrical features.
|
||||
*
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0e9e078fc212b063c04224cb75302841d88bc0c9
|
|
@ -0,0 +1,52 @@
|
|||
/* Drivers */
|
||||
#include "fsl_clock.h"
|
||||
#include "fsl_common.h"
|
||||
#include "fsl_edma.h"
|
||||
#include "fsl_gpio.h"
|
||||
|
||||
/* Board */
|
||||
#include "peripherals.h"
|
||||
#include "pin_mux.h"
|
||||
|
||||
/* LCD panel */
|
||||
#include "epd-spi/panel/lcd_generic_ssd1289.h"
|
||||
|
||||
#define IMPL_LCD_COMMAND_BASE (*(uint16_t *)0x70000000)
|
||||
#define IMPL_LCD_DATA_BASE (*(uint16_t *)0x78000000)
|
||||
|
||||
epd_ret_t epd_impl_write_command(void *handle, uint8_t *command, uint32_t len) {
|
||||
uint32_t param_len = (len - 1) / 2;
|
||||
|
||||
IMPL_LCD_COMMAND_BASE = command[0];
|
||||
|
||||
for (uint32_t i = 0; i < param_len; i++) {
|
||||
uint16_t le_param = (command[2 * i + 1] << 8) | command[2 * i + 2];
|
||||
IMPL_LCD_DATA_BASE = le_param;
|
||||
}
|
||||
|
||||
return EPD_OK;
|
||||
}
|
||||
|
||||
epd_ret_t epd_impl_write_data(void *handle, uint8_t *data, uint32_t len) {
|
||||
uint32_t data_len = (len / 2);
|
||||
|
||||
for (uint32_t i = 0; i < data_len; i++) {
|
||||
IMPL_LCD_DATA_BASE = ((uint16_t *)data)[i];
|
||||
}
|
||||
|
||||
return EPD_OK;
|
||||
}
|
||||
|
||||
epd_ret_t epd_impl_reset(void *handle) {
|
||||
uint32_t delay = CLOCK_GetCoreSysClkFreq() / 50; /* 20 msec */
|
||||
|
||||
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 0U);
|
||||
|
||||
for (uint32_t i = 0; i < delay; i++) {
|
||||
asm("nop");
|
||||
}
|
||||
|
||||
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 1U);
|
||||
|
||||
return EPD_OK;
|
||||
}
|
42
src/main.c
42
src/main.c
|
@ -1,21 +1,63 @@
|
|||
/* Board */
|
||||
#include "board.h"
|
||||
#include "clock_config.h"
|
||||
#include "peripherals.h"
|
||||
#include "pin_mux.h"
|
||||
|
||||
/* Utilities */
|
||||
#include "system_utilities.h"
|
||||
|
||||
/* SDK debug console */
|
||||
#include "fsl_debug_console.h"
|
||||
|
||||
/* LCD */
|
||||
#include "epd-spi/panel/lcd_generic_ssd1289.h"
|
||||
|
||||
epd_ret_t epd_impl_write_command(void *handle, uint8_t *command, uint32_t len);
|
||||
epd_ret_t epd_impl_write_data(void *handle, uint8_t *data, uint32_t len);
|
||||
epd_ret_t epd_impl_reset(void *handle);
|
||||
|
||||
lcd_generic_ssd1289_t lcd = {
|
||||
.cb =
|
||||
{
|
||||
.write_command_cb = epd_impl_write_command,
|
||||
.write_data_cb = epd_impl_write_data,
|
||||
.reset_cb = epd_impl_reset,
|
||||
},
|
||||
.mode = LCD_GENERIC_SSD1289_MODE_XBRG8888,
|
||||
.dir = LCD_GENETIC_SSD1289_DIR_HORIZONTAL,
|
||||
};
|
||||
|
||||
uint32_t disp_data[320];
|
||||
|
||||
int main(void) {
|
||||
BOARD_InitBootPins();
|
||||
BOARD_BootClockRUN();
|
||||
BOARD_InitBootPeripherals();
|
||||
|
||||
BOARD_InitDebugConsole();
|
||||
BOARD_EnableRTC();
|
||||
BOARD_EnableLCD();
|
||||
|
||||
print_hardware();
|
||||
sram_test();
|
||||
|
||||
for (uint32_t i = 0; i < 320; i++) {
|
||||
disp_data[i] = 0xFF0000;
|
||||
}
|
||||
|
||||
lcd_generic_ssd1289_init(&lcd);
|
||||
|
||||
epd_coord_t coord;
|
||||
coord.x_start = 0;
|
||||
coord.x_end = 319;
|
||||
|
||||
for (uint32_t i = 0; i < 239; i++) {
|
||||
coord.y_start = i;
|
||||
coord.y_end = i;
|
||||
lcd_generic_ssd1289_upload(&lcd, &coord, (uint8_t *)disp_data);
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
__WFI();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue