HPM SDK
HPMicro Software Development Kit
hpm_uart_lin.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef UART_LIN_H
9 #define UART_LIN_H
10 
11 #include "hpm_clock_drv.h"
12 #include "hpm_gpio_drv.h"
13 #include "hpm_uart_drv.h"
14 
23 typedef struct uart_lin_pin {
25  uint32_t baudrate;
28  void (*delay_us)(uint32_t us);
29  uint8_t tx_port;
30  uint8_t tx_pin;
32 
33 typedef struct {
34  uint8_t *buff;
35  uint8_t length;
38 
39 typedef enum {
46  uart_lin_frame_error = 6, /*<! data count error */
48 
49 typedef struct {
51  uint8_t id; /* master use id */
55 
56 typedef struct {
58  uint8_t pid; /* slave use pid */
61 
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 
73 uint8_t hpm_uart_lin_calculate_protected_id(uint8_t id);
74 
85 
96 
105 
114 
125 
134 
145 
155 
156 #ifdef __cplusplus
157 }
158 #endif
159 
164 #endif /* UART_LIN_H */
165 
uart_lin_stat_t hpm_uart_lin_master_receive_data(uart_lin_master_config_t *config)
master receive and check data&checksum
Definition: hpm_uart_lin.c:241
struct uart_lin_pin uart_lin_master_pin_ctrl_t
uint8_t hpm_uart_lin_calculate_protected_id(uint8_t id)
calculate lin pid from id
Definition: hpm_uart_lin.c:23
uart_lin_stat_t hpm_uart_lin_master_send_frame(uart_lin_master_config_t *config)
master send lin frame, including break, sync, pid, data and checksum
Definition: hpm_uart_lin.c:103
void hpm_uart_lin_send_wakeup(UART_Type *ptr, uart_lin_master_pin_ctrl_t *pin_ctrl)
uart_lin send break signal
Definition: hpm_uart_lin.c:93
uart_lin_stat_t hpm_uart_lin_slave_receive_data(uart_lin_slave_config_t *config)
salve receive and check data&checksum
Definition: hpm_uart_lin.c:295
void hpm_uart_lin_master_send_data(uart_lin_master_config_t *config)
master send data and checksum
Definition: hpm_uart_lin.c:222
void hpm_uart_lin_master_send_head(uart_lin_master_config_t *config)
master send data and checksum
Definition: hpm_uart_lin.c:206
uart_lin_stat_t
Definition: hpm_uart_lin.h:39
uart_lin_stat_t hpm_uart_lin_master_receive_frame(uart_lin_master_config_t *config)
master receive lin frame. master send break, sync, pid, then receive data and checksum
Definition: hpm_uart_lin.c:143
void hpm_uart_lin_slave_send_data(uart_lin_slave_config_t *config)
slave send data and checksum
Definition: hpm_uart_lin.c:278
@ uart_lin_id_parity_error
Definition: hpm_uart_lin.h:44
@ uart_lin_timeout
Definition: hpm_uart_lin.h:43
@ uart_lin_fail
Definition: hpm_uart_lin.h:41
@ uart_lin_checksum_error
Definition: hpm_uart_lin.h:45
@ uart_lin_frame_error
Definition: hpm_uart_lin.h:46
@ uart_lin_invalid_argument
Definition: hpm_uart_lin.h:42
@ uart_lin_success
Definition: hpm_uart_lin.h:40
Definition: hpm_gpio_regs.h:12
Definition: hpm_uart_regs.h:12
Definition: hpm_uart_lin.h:33
bool enhance_checksum
Definition: hpm_uart_lin.h:36
uint8_t * buff
Definition: hpm_uart_lin.h:34
uint8_t length
Definition: hpm_uart_lin.h:35
Definition: hpm_uart_lin.h:49
uint8_t id
Definition: hpm_uart_lin.h:51
uart_lin_data_t data
Definition: hpm_uart_lin.h:52
UART_Type * ptr
Definition: hpm_uart_lin.h:50
uart_lin_master_pin_ctrl_t pin_ctrl
Definition: hpm_uart_lin.h:53
Definition: hpm_uart_lin.h:23
uint8_t tx_port
Definition: hpm_uart_lin.h:29
GPIO_Type * ptr
Definition: hpm_uart_lin.h:24
void(* config_uart_pin_as_gpio)(UART_Type *ptr)
Definition: hpm_uart_lin.h:27
void(* config_uart_pin)(UART_Type *ptr)
Definition: hpm_uart_lin.h:26
uint32_t baudrate
Definition: hpm_uart_lin.h:25
uint8_t tx_pin
Definition: hpm_uart_lin.h:30
void(* delay_us)(uint32_t us)
Definition: hpm_uart_lin.h:28
Definition: hpm_uart_lin.h:56
uart_lin_data_t data
Definition: hpm_uart_lin.h:59
UART_Type * ptr
Definition: hpm_uart_lin.h:57
uint8_t pid
Definition: hpm_uart_lin.h:58