不含stm32 底层的代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MyStm32Code/device/Inc/wk2xxx.h

347 lines
11 KiB

2 years ago
#ifndef _WK2XXX_H_
#define _WK2XXX_H_
#include "main.h"
#define WK2XXX_GPORT 1// /wkxxxx Global rigister of PORT
#define WK2XXX_GENA 0X00
#define WK2XXX_GRST 0X01
#define WK2XXX_GMUT 0X02
#define WK2XXX_GIER 0X10
#define WK2XXX_GIFR 0X11
#define WK2XXX_GPDIR 0X21
#define WK2XXX_GPDAT 0X31
//wkxxxx slave uarts rigister address defines
#define WK2XXX_SPAGE 0X03
//PAGE0
#define WK2XXX_SCR 0X04
#define WK2XXX_LCR 0X05
#define WK2XXX_FCR 0X06
#define WK2XXX_SIER 0X07
#define WK2XXX_SIFR 0X08
#define WK2XXX_TFCNT 0X09
#define WK2XXX_RFCNT 0X0A
#define WK2XXX_FSR 0X0B
#define WK2XXX_LSR 0X0C
#define WK2XXX_FDAT 0X0D
#define WK2XXX_FWCR 0X0E
#define WK2XXX_RS485 0X0F
//PAGE1
#define WK2XXX_BAUD1 0X04
#define WK2XXX_BAUD0 0X05
#define WK2XXX_PRES 0X06
#define WK2XXX_RFTL 0X07
#define WK2XXX_TFTL 0X08
#define WK2XXX_FWTH 0X09
#define WK2XXX_FWTL 0X0A
#define WK2XXX_XON1 0X0B
#define WK2XXX_XOFF1 0X0C
#define WK2XXX_SADR 0X0D
#define WK2XXX_SAEN 0X0E
#define WK2XXX_RTSDLY 0X0F
//WK串口扩展芯片的寄存器的位定义
//wkxxx register bit defines
// GENA
#define WK2XXX_UT4EN 0x08
#define WK2XXX_UT3EN 0x04
#define WK2XXX_UT2EN 0x02
#define WK2XXX_UT1EN 0x01
//GRST
#define WK2XXX_UT4SLEEP 0x80
#define WK2XXX_UT3SLEEP 0x40
#define WK2XXX_UT2SLEEP 0x20
#define WK2XXX_UT1SLEEP 0x10
#define WK2XXX_UT4RST 0x08
#define WK2XXX_UT3RST 0x04
#define WK2XXX_UT2RST 0x02
#define WK2XXX_UT1RST 0x01
//GIER
#define WK2XXX_UT4IE 0x08
#define WK2XXX_UT3IE 0x04
#define WK2XXX_UT2IE 0x02
#define WK2XXX_UT1IE 0x01
//GIFR
#define WK2XXX_UT4INT 0x08
#define WK2XXX_UT3INT 0x04
#define WK2XXX_UT2INT 0x02
#define WK2XXX_UT1INT 0x01
//SPAGE
#define WK2XXX_SPAGE0 0x00
#define WK2XXX_SPAGE1 0x01
//SCR
#define WK2XXX_SLEEPEN 0x04
#define WK2XXX_TXEN 0x02
#define WK2XXX_RXEN 0x01
//LCR
#define WK2XXX_BREAK 0x20
#define WK2XXX_IREN 0x10
#define WK2XXX_PAEN 0x08
#define WK2XXX_PAM1 0x04
#define WK2XXX_PAM0 0x02
#define WK2XXX_STPL 0x01
//FCR
//SIER
#define WK2XXX_FERR_IEN 0x80
#define WK2XXX_CTS_IEN 0x40
#define WK2XXX_RTS_IEN 0x20
#define WK2XXX_XOFF_IEN 0x10
#define WK2XXX_TFEMPTY_IEN 0x08
#define WK2XXX_TFTRIG_IEN 0x04
#define WK2XXX_RXOUT_IEN 0x02
#define WK2XXX_RFTRIG_IEN 0x01
//SIFR
#define WK2XXX_FERR_INT 0x80 /* 接收FIFO数据错误中断标志位 */
#define WK2XXX_CTS_INT 0x40
#define WK2XXX_RTS_INT 0x20
#define WK2XXX_XOFF_INT 0x10
#define WK2XXX_TFEMPTY_INT 0x08 /* 发送FIFO空中断标志位 */
#define WK2XXX_TFTRIG_INT 0x04 /* 发送FIFO触点中断标志位 */
#define WK2XXX_RXOVT_INT 0x02 /* 接收FIFO超时中断标志位 */
#define WK2XXX_RFTRIG_INT 0x01 /* 接收FIFO触点中断标志位 */
//TFCNT
//RFCNT
//FSR FIFO
#define WK2XXX_RFOE 0x80 /* 子串口溢出 */
#define WK2XXX_RFBI 0x40 /* 子串口 break line */
#define WK2XXX_RFFE 0x20 /* 子串口数据帧错误 */
#define WK2XXX_RFPE 0x10 /* 子串口数据校验错误 */
#define WK2XXX_RDAT 0x08 /* 子串口接收为空 0:非空 1:空*/
#define WK2XXX_TDAT 0x04 /* 子串口发送为空 */
#define WK2XXX_TFULL 0x02 /* 子串口发送满 */
#define WK2XXX_TBUSY 0x01 /* 子串口发送忙 */
//LSR 接收状态
#define WK2XXX_OE 0x08 /* 子串口接收溢出 */
#define WK2XXX_BI 0x04 /* 子串口接收 line-break */
#define WK2XXX_FE 0x02 /* 子串口数据接收帧错误 */
#define WK2XXX_PE 0x01 /* 子串口数据接收校验错误 */
//FWCR
uint16_t WK_PortSendData(uint8_t port, const void* buf, uint16_t len);
uint16_t WK_PortRecvData(uint8_t port, void* buf, uint16_t len);
void WK_PortInit(uint8_t port, uint32_t fosc, uint32_t baudrate);
void WK_IRQHandler(void);
void WK_Rst(void);
uint8_t Wk2xxx_Test(void);
/* 切换子串口回调函数 */
// int wk2114_sub_uart_chenge_recv_fun(struct wk2114_sub_uart *sub_uart,void *recv_class,wk2114_sub_uart_recv_fun recv_fun);
#endif /* _WK2XXX_H_ */
// // #include "sys.h"
// #include "myuart.h"
// #include "main.h"
// static uint8_t init_buf=0x55;
// //如下为WK系列串口扩展芯片的寄存器地址定义,不同的芯片,可能寄存器少一些,所以具体的寄存器请看数据手册
// //wkxxxx Global rigister address defines
// #define WK2XXX_GENA 0X00
// #define WK2XXX_GRST 0X01
// #define WK2XXX_GMUT 0X02
// #define WK2XXX_GIER 0X10
// #define WK2XXX_GIFR 0X11
// #define WK2XXX_GPDIR 0X21
// #define WK2XXX_GPDAT 0X31
// #define WK2XXX_GPORT 1// /wkxxxx Global rigister of PORT
// //wkxxxx slave uarts rigister address defines
// #define WK2XXX_SPAGE 0X03
// //PAGE0
// #define WK2XXX_SCR 0X04
// #define WK2XXX_LCR 0X05
// #define WK2XXX_FCR 0X06
// #define WK2XXX_SIER 0X07
// #define WK2XXX_SIFR 0X08
// #define WK2XXX_TFCNT 0X09
// #define WK2XXX_RFCNT 0X0A
// #define WK2XXX_FSR 0X0B
// #define WK2XXX_LSR 0X0C
// #define WK2XXX_FDAT 0X0D
// #define WK2XXX_FWCR 0X0E
// #define WK2XXX_RS485 0X0F
// //PAGE1
// #define WK2XXX_BAUD1 0X04
// #define WK2XXX_BAUD0 0X05
// #define WK2XXX_PRES 0X06
// #define WK2XXX_RFTL 0X07
// #define WK2XXX_TFTL 0X08
// #define WK2XXX_FWTH 0X09
// #define WK2XXX_FWTL 0X0A
// #define WK2XXX_XON1 0X0B
// #define WK2XXX_XOFF1 0X0C
// #define WK2XXX_SADR 0X0D
// #define WK2XXX_SAEN 0X0E
// #define WK2XXX_RRSDLY 0X0F
// //WK串口扩展芯片的寄存器的位定义
// //wkxxx register bit defines
// // GENA
// #define WK2XXX_UT4EN 0x08
// #define WK2XXX_UT3EN 0x04
// #define WK2XXX_UT2EN 0x02
// #define WK2XXX_UT1EN 0x01
// //GRST
// #define WK2XXX_UT4SLEEP 0x80
// #define WK2XXX_UT3SLEEP 0x40
// #define WK2XXX_UT2SLEEP 0x20
// #define WK2XXX_UT1SLEEP 0x10
// #define WK2XXX_UT4RST 0x08
// #define WK2XXX_UT3RST 0x04
// #define WK2XXX_UT2RST 0x02
// #define WK2XXX_UT1RST 0x01
// //GIER
// #define WK2XXX_UT4IE 0x08
// #define WK2XXX_UT3IE 0x04
// #define WK2XXX_UT2IE 0x02
// #define WK2XXX_UT1IE 0x01
// //GIFR
// #define WK2XXX_UT4INT 0x08
// #define WK2XXX_UT3INT 0x04
// #define WK2XXX_UT2INT 0x02
// #define WK2XXX_UT1INT 0x01
// //SPAGE
// #define WK2XXX_SPAGE0 0x00
// #define WK2XXX_SPAGE1 0x01
// //SCR
// #define WK2XXX_SLEEPEN 0x04
// #define WK2XXX_TXEN 0x02
// #define WK2XXX_RXEN 0x01
// //LCR
// #define WK2XXX_BREAK 0x20
// #define WK2XXX_IREN 0x10
// #define WK2XXX_PAEN 0x08
// #define WK2XXX_PAM1 0x04
// #define WK2XXX_PAM0 0x02
// #define WK2XXX_STPL 0x01
// //FCR
// //SIER
// #define WK2XXX_FERR_IEN 0x80
// #define WK2XXX_CTS_IEN 0x40
// #define WK2XXX_RTS_IEN 0x20
// #define WK2XXX_XOFF_IEN 0x10
// #define WK2XXX_TFEMPTY_IEN 0x08
// #define WK2XXX_TFTRIG_IEN 0x04
// #define WK2XXX_RXOVT_IEN 0x02
// #define WK2XXX_RFTRIG_IEN 0x01
// //SIFR
// #define WK2XXX_FERR_INT 0x80
// #define WK2XXX_CTS_INT 0x40
// #define WK2XXX_RTS_INT 0x20
// #define WK2XXX_XOFF_INT 0x10
// #define WK2XXX_TFEMPTY_INT 0x08
// #define WK2XXX_TFTRIG_INT 0x04
// #define WK2XXX_RXOVT_INT 0x02
// #define WK2XXX_RFTRIG_INT 0x01
// //TFCNT
// //RFCNT
// //FSR
// #define WK2XXX_RFOE 0x80
// #define WK2XXX_RFBI 0x40
// #define WK2XXX_RFFE 0x20
// #define WK2XXX_RFPE 0x10
// #define WK2XXX_RDAT 0x08
// #define WK2XXX_TDAT 0x04
// #define WK2XXX_TFULL 0x02
// #define WK2XXX_TBUSY 0x01
// //LSR
// #define WK2XXX_OE 0x08
// #define WK2XXX_BI 0x04
// #define WK2XXX_FE 0x02
// #define WK2XXX_PE 0x01
// //FWCR
// //RS485
// //常用波特率宏定义
// #define B600 1
// #define B1200 2
// #define B2400 3
// #define B4800 4
// #define B9600 5
// #define B19200 6
// #define B38400 7
// #define B76800 8
// #define B1800 9
// #define B3600 10
// #define B7200 11
// #define B14400 12
// #define B28800 13
// #define B57600 14
// #define B115200 15
// #define B230400 16
// // typedef int (*wk2xxx_send_fun)(void *send_obj,char *buf,uint32_t size);
// typedef void (*wk2xxx_sub_uart_recv_fun)( void *recv_obj, uint8_t *buf, uint32_t size ); //< 子串口接收数据回调函数
// typedef int (*wk2xxx_send_fun)( void *send_obj, uint8_t *buf, uint32_t size ); //< wk2114发送函数
// /* 发送数据的buf size*/
// struct wk2114_send_record
// {
// uint32_t size;
// uint8_t *p_data;
// };
// /*子串口*/
// struct wk2114_sub_uart
// {
// uint8_t flag; //< 标志位
// uint8_t cmd; //< 上一次的子串口寄存器读命令
// uint8_t reg; //< 上一次接收到的子串口寄存器
// uint8_t uart_index; //< 串口地址
// void *recv_obj; //< 接收回调函数的第一个参数
// wk2xxx_sub_uart_recv_fun recv_fun; //< 接收回调函数
// uint8_t *recv_buf; //< 接收缓冲区
// uint8_t *send_buf; //< 当前发送数据指针
// uint32_t recv_buf_p; //< 接收缓冲区计数
// uint32_t recv_buf_size; //< 接收缓冲区大小
// uint32_t send_buf_p; //< 发送缓冲区计数
// struct wk2114_send_record send_record[8]; //< 发送记录
// WK2xxx_TypeDef *wk2114; //< wk2114结构指针
// };
// /*主串口 主spi*/
// typedef struct
// {
// // UART_HandleTypeDef *huart;
// uint8_t flag; //< 标志位
// uint8_t cmd; //< 上一次的全局寄存器读命令
// uint8_t reg; //< 上一次接收到的全局寄存器
// uint32_t dev_clock_hz; //< wk2114时钟源频率
// uint8_t cmd_buf[64][2]; //< 命令队列缓冲区
// uint8_t send_buf[18]; //< 发送缓冲区
// void *send_obj; //< 主spi
// wk2xxx_send_fun send;
// EXTI_HandleTypeDef *exti;
// uint8_t trans_mode; /* 0 :polling, 1: IT 2: DMA*/
// struct wk2114_sub_uart *sub_uart[4]; //< 子串口
// }WK2xxx_TypeDef;
// WK2xxx_TypeDef* WK2XXX_Init( void );
// void WK2xxx_EXTI_callback( WK2xxx_TypeDef *wk2xxx );
// void Wk2xxxWriteReg( unsigned char port, unsigned char reg, unsigned char dat );
// unsigned char Wk2xxxReadReg( unsigned char port, unsigned char reg );
// void Wk2xxxWriteFifo( unsigned char port,unsigned char *wbuf,unsigned int len );
// void Wk2xxxReadFifo( unsigned char port,unsigned char *rbuf,unsigned int len );
// void Wk2xxxInit( unsigned char port );
// void Wk2xxxClose( unsigned char port );
// void Wk2xxxSetBaud( unsigned char port, int baud );
// unsigned int Wk2xxxGetBuf( unsigned char port,unsigned char *getbuf );
// unsigned int Wk2xxxSendBuf( unsigned char port,unsigned char *sendbuf,unsigned int len );
// extern void WK2XXX_SPI_Init(void);
// extern void WK2XXX_Reset_Init(void);
// extern void WK2XXX_RST_Init(void);