概述
DA1458x SDK为每个接口(GPIO,SPI,UART,ADC,正交和定时器)提供了一个核心驱动器,以及多个采样驱动器(加速度计,SPI闪存,EEPROM I2C,电池电量)。 请注意,即使SDK中提供了所有驱动程序的源代码来帮助调试,也不建议修改核心驱动程序。
注:在系统从扩展睡眠或深度睡眠模式唤醒后,必须再次调用设备初始化和配置功能。 实现这些调用的专用位置是periph_setup.c中的periph_init()函数。
UART
该驱动程序的源代码位于:sdk platform driver uart。
1. How to Use this Driver
●启用UART外设时钟,并将CLK_PER_REG中的相应位置1。
●使用uart_init()初始化UART。
●使用uart_flow_on()将RTS信号设置为有效(LOW)。
●使用uart_flow_off()将RTS信号设置为非活动(HIGH)。
●使用uart_finish_transfers()等待所有传输完成。
●使用uart_read()从UART读取。
●使用uart_write()写入UART。
注意 :在系统完全启动(系统执行到达主循环)之前,请勿调用任何UART函数来启动UART事务。 XTAL16M时钟必须在任何UART事务发生之前稳定下来,无论是在上电之后还是从睡眠中唤醒之后。
2. Initialization and Configuration
void uart_init( uint8_t baud_rate, uint8_t mode)
baud_rate: UART_BAUDRATE_115K2
mode:
位7:始终设置为零。
位6:UART中断控制位。将该位设置为1,会导致中断条件传输到接收设备:串行输出被强制为间隔(逻辑0)状态。
位5:保留(必须为0)。
位4:偶校验选择。启用奇偶校验(奇偶校验使能= 1)时,该选项用于在偶校验和奇校验之间进行选择。如果设置为1,则发送或检查偶数个逻辑1。如果设置为0,则发送或检查奇数个逻辑1。
位3:奇偶校验使能。该位用于分别启用和禁用发送和接收的串行字符中的奇偶校验生成和检测:
0:禁用奇偶校验
1:启用奇偶校验
位2:停止位的数量。这用于选择外设发送和接收的每个字符的停止位数。
0:1个停止位
1:当DLS(LCR [1:0])为零时,1.5个停止位,否则2个停止位
位1,0:数据长度选择。这用于选择外围设备发送和接收的每个字符的数据位数:
00:5位
01:6位
10:7位
11:8位
例。模式= 0x3:{无奇偶校验,1个停止位,8位数据长度}设置被应用。
void uart_flow_on(void)
使能UART RTS信号(低电平有效)。如果配置了RTS引脚,则将其设置为活动(LOW)。 请注意,在启用自动流控制的情况下,RTS信号也由接收器FIFO阈值触发器选通(当高于阈值时,RTS为高电平无效)。
void uart_flow_off(void)
将RTS信号设置为无效(高),禁用UART RTS信号(低电平有效)。RTS引脚(如果已配置)将被驱动为低电平(有效)
void uart_finish_transfers(void)
等待直到所有UART传输完成。实质是等待UART_LSR_REG寄存器的发送器空和发送保持寄存器空中的任何一位被置位。
void uart_write(uint8_t *bufptr, uint32_t size, void (*callback)(uint8_t))
将一个或多个字节的数据写入UART。
bufptr指向缓冲区的指针。
size要发送的字节数。
callback设置为NULL。
示例:uart_write(buffer1 [],12,NULL)将从buffer1向UART发送12个字节。
void uart_read(uint8_t *bufptr, uint32_t size, void (*callback)(uint8_t))
从UART读取一个或多个字节的数据。
bufptr指向缓冲区的指针。
size要读取的字节数。
callback设置为NULL。
示例:uart_write(buffer1 [],12,NULL)将从UART读取12个字节到buffer1。
Definitions
#define UART_BAUDRATE_115K2 9
/// Baudrate used on the UART
#ifndef CFG_ROM
#define UART_BAUDRATE UART_BAUDRATE_115K2
#else //CFG_ROM
#define UART_BAUDRATE UART_BAUDRATE_460K8
#endif //CFG_ROM
#if (UART_BAUDRATE == UART_BAUDRATE_921K6)
#define UART_CHAR_DURATION 11
#else
#define UART_CHAR_DURATION (UART_BAUDRATE * 22)
#endif // (UART_BAUDRATE == UART_BAUDRATE_921K6)
/// Generic enable/disable enum for UART driver
enum
{
/// uart disable
UART_DISABLE = 0,
/// uart enable
UART_ENABLE = 1
};
/// Character format
enum
{
/// char format 5
UART_CHARFORMAT_5 = 0,
/// char format 6
UART_CHARFORMAT_6 = 1,
/// char format 7
UART_CHARFORMAT_7 = 2,
/// char format 8
UART_CHARFORMAT_8 = 3
};
/// Stop bit
enum
{
/// stop bit 1
UART_STOPBITS_1 = 0,
/* Note: The number of stop bits is 1.5 if a
* character format with 5 bit is chosen */
/// stop bit 2
UART_STOPBITS_2 = 1
};
/// Parity bit
enum
{
/// even parity
UART_PARITYBIT_EVEN = 0,
/// odd parity
UART_PARITYBIT_ODD = 1,
/// space parity
UART_PARITYBIT_SPACE = 2, // The parity bit is always 0.
/// mark parity
UART_PARITYBIT_MARK = 3 // The parity bit is always 1.
};
/// Error detection
enum
{
/// error detection disabled
UART_ERROR_DETECT_DISABLED = 0,
/// error detection enabled
UART_ERROR_DETECT_ENABLED = 1
};
/// status values
enum
{
/// status ok
UART_STATUS_OK,
/// status not ok
UART_STATUS_ERROR
};
最后
以上就是知性自行车为你收集整理的Peripheral Drivers of DA1458x Software Platform----UART的全部内容,希望文章能够帮你解决Peripheral Drivers of DA1458x Software Platform----UART所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复