first commit, new repo branches from datalink_repo
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* Description: System bus uart driver implementation file.
|
||||
*
|
||||
* Date: 2023-05-06 10:59
|
||||
* LastEditTime: 2023-05-06 21:48
|
||||
* Revisions: Rev 0.0
|
||||
* History:
|
||||
* [2023-05-06]: Initial version.
|
||||
*
|
||||
* Copyright(c) 2022 Beijing Institute of Technology.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef SYSTEMBUS_UART_H
|
||||
#define SYSTEMBUS_UART_H
|
||||
|
||||
/****************** Include Files ********************/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "util.h"
|
||||
/**************************** Type Definitions *****************************/
|
||||
/**
|
||||
*
|
||||
* Write a value to a SYSTEMBUS_UART register. A 32 bit write is performed.
|
||||
* If the component is implemented in a smaller width, only the least
|
||||
* significant data is written.
|
||||
*
|
||||
* @param baseAddr is the base address of the SYSTEMBUS_UARTdevice.
|
||||
* @param offset is the register offset from the base to write to.
|
||||
* @param data is the data written to the register.
|
||||
*
|
||||
* @return None.
|
||||
*
|
||||
* @note
|
||||
* C-style signature:
|
||||
* void SYSTEMBUS_UART_mWriteReg(uint32_t BaseAddress, unsigned RegOffset, uint32_t Data)
|
||||
*
|
||||
*/
|
||||
#define SYSTEMBUS_UART_mWriteReg(baseAddr, offset, data) \
|
||||
IO_Out32((baseAddr) + (offset), (uint32_t)(data))
|
||||
|
||||
/**
|
||||
*
|
||||
* Read a value from a SYSTEMBUS_UART register. A 32 bit read is performed.
|
||||
* If the component is implemented in a smaller width, only the least
|
||||
* significant data is read from the register. The most significant data
|
||||
* will be read as 0.
|
||||
*
|
||||
* @param baseAddr is the base address of the SYSTEMBUS_UART device.
|
||||
* @param offset is the register offset from the base to write to.
|
||||
*
|
||||
* @return Data is the data from the register.
|
||||
*
|
||||
* @note
|
||||
* C-style signature:
|
||||
* uint32_t SYSTEMBUS_UART_mReadReg(uint32_t BaseAddress, unsigned RegOffset)
|
||||
*
|
||||
*/
|
||||
#define SYSTEMBUS_UART_mReadReg(baseAddr, offset) \
|
||||
IO_In32((baseAddr) + (offset))
|
||||
|
||||
/************************** Data Type Definitions ****************************/
|
||||
typedef struct
|
||||
{
|
||||
uintptr_t baseAddr;
|
||||
} SYSBUS_UART_CONFIG;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SYSBUS_UART_CONFIG config;
|
||||
} SYSBUS_UART;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t len;
|
||||
uint8_t checkSum;
|
||||
uint8_t isValid;
|
||||
uint8_t dummy;
|
||||
uint8_t data[256];
|
||||
} SYSBUS_UART_FRAME;
|
||||
|
||||
/************************** Function Prototypes ******************************/
|
||||
// Instance initial
|
||||
int SysbusUart_Init(SYSBUS_UART **instPtr, SYSBUS_UART_CONFIG *config);
|
||||
|
||||
// Send a system bus frame.
|
||||
int SysbusUart_Send(SYSBUS_UART *instPtr, SYSBUS_UART_FRAME *frame);
|
||||
|
||||
// Get last system bus frame.
|
||||
int SysbusUart_Recv(SYSBUS_UART *instPtr, SYSBUS_UART_FRAME *frame);
|
||||
|
||||
// Get system bus rx channel status.
|
||||
bool SysbusUart_IsRxBusy(SYSBUS_UART *instPtr);
|
||||
|
||||
// Get system bus tx channel status.
|
||||
bool SysbusUart_IsTxBusy(SYSBUS_UART *instPtr);
|
||||
|
||||
#endif // SYSTEMBUS_UART_H
|
||||
Reference in New Issue
Block a user