四极管:串口驱动的具体开发(二)
来源:互联网 发布:感康和泰诺 知乎 编辑:程序博客网 时间:2024/06/06 00:58
来源于Windows CE工程实践完全解析
CPdd2416Uart类有一个CReg2416Uart指针类型的数据成员m_pReg2416Uart。CReg2416Uart是一个类,它的抽象意义是S3C2416的UART端口控制器SFR寄存器集以及对它们的读写操作方法。在串口驱动的程序PDD层中,所有对UART端口内部寄存器的读写访问都是通过这个m_pReg2416Uart数据成员实现的,但是它们不会直接读写m_pReg2416Uart成员所指向的寄存器,而是通过CReg2416Uart类的成员函数。CReg2416Uart类的头文件定义如下(C:\WINCE500\PLATFORM\SMDK2416\Src\Drivers\Serial\pdds3c2416_ser.h):
class CReg2416Uart {
public:
CReg2416Uart(PULONG pRegAddr);
virtual ~CReg2416Uart() { ; };
virtual BOOL Init() ;
// We do not virtual Read & Write data because of Performance Concern.
void Write_ULCON(ULONG uData) { WRITE_REGISTER_ULONG( m_pReg, (uData)); };
ULONG Read_ULCON() { return (READ_REGISTER_ULONG(m_pReg)); } ;
void Write_UCON (ULONG uData) { WRITE_REGISTER_ULONG(m_pReg+1 , uData); };
ULONG Read_UCON() { return READ_REGISTER_ULONG(m_pReg+1 ); };
void Write_UFCON(ULONG uData) { WRITE_REGISTER_ULONG( m_pReg+2, uData);};
ULONG Read_UFCON() { return READ_REGISTER_ULONG(m_pReg + 2); };
void Write_UMCON(ULONG uData) { WRITE_REGISTER_ULONG(m_pReg + 3, uData);};
ULONG Read_UMCON() { return READ_REGISTER_ULONG(m_pReg + 3);};
ULONG Read_UTRSTAT() { return READ_REGISTER_ULONG(m_pReg + 4);};
ULONG Read_UERSTAT() { return READ_REGISTER_ULONG(m_pReg + 5);};
ULONG Read_UFSTAT() { return READ_REGISTER_ULONG(m_pReg + 6);};
ULONG Read_UMSTAT() { return READ_REGISTER_ULONG(m_pReg + 7);};
void Write_UTXH (UINT8 uData) { WRITE_REGISTER_ULONG( (m_pReg + 8), uData) ; };
UINT8 Read_URXH() { return (UINT8) READ_REGISTER_ULONG(m_pReg + 9); };
void Write_UBRDIV(ULONG uData) { WRITE_REGISTER_ULONG( m_pReg + 10, uData );};
ULONG Read_UBRDIV() { return READ_REGISTER_ULONG(m_pReg + 10); };
void Write_UDIVSLOT(ULONG uData) { WRITE_REGISTER_ULONG( (m_pReg + 11), uData) ; };
ULONG Read_UDIVSLOT() { return READ_REGISTER_ULONG(m_pReg + 11); };
virtual BOOL Write_BaudRate(ULONG uData);
PULONG GetRegisterVirtualAddr() { return m_pReg; };
virtual void Backup();
virtual void Restore();
#ifdef DEBUG
virtual void DumpRegister();
#endif
protected:
volatile PULONG const m_pReg;
BOOL m_fIsBackedUp;
private:
ULONG m_ULCONBackup;
ULONG m_UCONBackup;
ULONG m_UFCONBackup;
ULONG m_UMCOMBackup;
ULONG m_UBRDIVBackup;
ULONG m_UDIVSLOTBackup;
ULONG m_BaudRate;
ULONG m_s3c2416_pclk;
};
Read_ULCON和Write_ULCON两个成员函数用于读写S3C2416芯片的UART端口的线路控制寄存器ULCON。线路控制寄存器在寄存器块中的便宜地址为0,3个线路控制寄存器ULCON0、ULCON1、ULCON2(片内系统物理地址分别是0x50000000、0x50004000和0x50008000)分别为ULCON0、ULCON1、ULCON2(片内系统物理地址分别是0X50000000、0X50004000和0X50008000)分别为UART0、UART1和UART2这三个串口端口服务。线路控制寄存器用于控制串口的接受发送数据帧的比特构成,包括:数据位数、停止位数、是否启用校验位和校验的方式以及是否使用红外收发模式。对线路控制寄存器ULCON的详细描述见表:
ULCON的位
取值
描述
ULCON[1:0]
00
没帧有5个数据位
01
没帧有6个数据位
10
没帧有7个数据位
11
没帧有8个数据位
ULCON[2]
0
没帧有1个停止位
1
没帧有2个停止位
ULCON[5:3]
0XX
无校验
100
奇校验
101
偶校验
110
校验位全为1
110
校验位全为0
ULCON[6]
0
普通模式收发
1
红外模式收发
ULCON[31:7]
X
保留未使用
Read_UCON和Write_UCON成员函数用于读写串口控制寄存器UCON。
Read_UFCON和Write_UFCON成员函数用于读写串口的FIFO控制寄存器UFCON。
成员函数Read_UMCON和Write_UMCON用于读写串口的MODEM控制器UMCON。
Read_UTRSTAT成员函数的功能是读取串口的收发状态寄存器UTRSTAT。
Read_UERSTAT成员函数用于读取串口的错误状态寄存器UERSTAT。
Read_UFSTAT成员函数用于读取串口的FIFO状态寄存器UFSTAT。
Read_UMSTAT成员函数用于读取串口的MODEM状态寄存器UMSTAT。
Read_URXH和Write_UTXH成员函数的功能分别是读取串口的接收数据端口寄存器URXH和写入串口的发送数据端口寄存器UTXH。
Read_UBRDIV和Read_UBRDIV成员函数的功能是读写串口的UBRDIV寄存器。
- 四极管:串口驱动的具体开发(二)
- 四极管:串口驱动的具体开发(一)
- 四极管:串口驱动的具体开发(三)
- 四极管:串口驱动的具体开发(四)
- 串口驱动(二)
- 串口驱动(二)
- Android驱动(二)串口操作之tiny4412开发板实现串口通讯的两种方法
- s3c2440串口驱动(二)
- Linux下的串口总线驱动(二)
- Linux下的虚拟串口驱动(二)
- Window XP驱动开发(二十四)虚拟串口设备驱动
- 串口驱动开发学习
- 硬件开发----串口驱动
- 串口参数的具体含义
- 串口参数的具体定义
- 串口参数的具体含义
- S5PV210开发 -- 串口驱动开发
- WinCE虚拟串口驱动(二)
- 设计模式在C语言中的应用--读nginx源码
- myeclipse自定义添加xsd
- 用C实现面向对象思想
- OOC-用C实现面向对象
- 查看网站的IP地址
- 四极管:串口驱动的具体开发(二)
- KMP算法
- Windows Phone 7 调用CE组件
- arm中的PC值
- show()与showDialog()的区别
- 26个ASP.NET常用性能优化方法
- Java 控制台的基本命令 java javac jar
- SSH web.xml里<filter-mapping>中的<dispatcher>意思
- C#日期时间格式化