UART 通信或 RS232 串行接口由许多微控制器提供。µVision 调试器模拟 UART 接口并提供串行窗口进行通信。串行 Windows 的操作类似于终端。作为替代方案,可以使用ASSIGN 命令将串行输出重定向到任何 COM 端口。
外设对话框
通过菜单 Peripherals提供的UART或Serial对话框显示微控制器的串行接口状态。这些对话框允许查看系统的通信波特率和其他参数。
虚拟仿真寄存器 (VTREG)
模拟 UART 通信的 VTREG 实现如下:
VTREG | Description |
SxIN | 是串行接口 x的输入缓冲区。SxIN 接受由目标程序读取的 8 位或 9 位值。读取 SxIN 以确定输入缓冲区何时准备好接受另一个字符。特殊值 0xFFFF 表示前一个值已被处理并且可以写入新值。其他特殊值可用于模拟奇偶校验错误或帧错误。 |
SxOUT | 是串行接口 x的输出缓冲区。µVision 将 8 位或 9 位值(按编程)复制到 SxOUT VTREG。 |
SxTIME | 定义串行接口x的波特率时序。当 SxTIME 为 1 时,µVision 使用编程的波特率模拟串行接口的时序。当 SxTIME 为 0(默认值)时,编程的波特率时序被忽略,串行传输是瞬时的。 |
VTREG(SxIN、SxOUT 和 SxTIME)的命名约定因器件而异。一些设备提供了不止一个 UART 接口。因此,VTREG 名称可能以 S0 或 S1 为前缀。使用命令DIR VTREG检查 UART 接口的 VTREG 名称。
通过 SxIN VTREG 输入字符
SxIN VTREG 代表微控制器片上串行端口的输入。从命令行窗口使用的以下命令将值输入到串行流中。此外,串行窗口可用于输入串行端口的值。
SIN = 'A' /* Input the letter A to the serial stream */
SIN = 0x019E /* Input the 9-bit value 19Ex to the serial stream */
SIN = 0xA9 /* Input value 0xA9 to I/O stream for the UART */
控制 UART 通信时序
SxTIME VTREG 允许控制模拟串行端口的时序。
l 值为 1 表示串行端口时序与目标硬件相同。使用此值来模拟串行端口 I/O 上的波特率的含义。
l 值为 0 表示串行输入和输出是瞬时发生的。当波特率不相关或加速串行输出时使用此值。
例如:
STIME = 0 /* 将 Serial 0 设置为 FAST 时序 */
STIME = 1 /* 设置 Serial 0 以获得准确的计时 */
UART 仿真示例
以下调试脚本以大约 19.200 波特的速度发送字符“A”-“Z”。
signal void serialA_Z (void) {
char ch;
for (ch = 'A'; ch < 'Z'; ch++) {
S0IN = ch; /* Send character */
twatch (CLOCK / 900);
} /* Repeat */
}