BA-IS-XX UART-RX
使用 RITMeX BA-IS-XX I/O 模块通过 UART 接收数据。
类型: CFunction
图书馆中的路径:
|
参数
Main group
#
Номер модуля: —
唯一模块标识
1
| 3
| 4
| 5
| 6
| 7
| 8
Details
用于在实时设备中安装多个同类型 I/O 模块时唯一标识模块。
模块编号签署在 RITM 外壳上。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
#
Номер канала: —
用于接收的 UART 通道
1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| 10
| 11
| 12
| 13
| 14
| 15
| 16
| 17
| 18
| 19
| 20
| 21
| 22
| 23
| 24
| 25
| 26
| 27
| 28
| 29
| 30
| 31
| 32
Details
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# Макс. количество слов: — 每个计算步骤从 UART 缓冲器读取的字数
Details
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# Шаг расчёта, с: — 实时应用程序通过 UART 接收数据的计算步长,以秒为单位
Details
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
关于使用
关于使用的详细说明
FPGA 上的 UART 模块包含两个硬件缓冲区:用于接收和发送。每个缓冲区的大小为 16
字节。因此,有必要充分了解特定 UART 通信协议的特性,以避免这些缓冲区溢出,并确保在尝试发送下一条信息之前,上一条信息已经发送完毕。
首先要考虑的是数据传输速率。显然,通过 UART 传输的数据并不是即时传输的。例如,假设您要以 115200 的波特率发送一个包含 16 个字符的数组(每个字符包含 10 个比特,即 8 个数据位、起始位和停止位)。这将需要 秒来完成。如果发送 UART 块以 0.001
s 为增量运行,数据将来不及在下一个块计算步骤之前发送,因为 0.001
< 0.0014
。因此,无法发送下一个符号数组,在这种情况下,模型的执行将因错误而停止。因此需要找到一个块计算步骤、波特率和数组大小的组合,以便在一个块计算步骤中发送这些数据。
*第二点需要考虑的是接收时硬件缓冲区的大小。如果来自外部的数据比BA-IS-XX UART-TX 数据块从硬件缓冲区读取数据的速度更快,那么接收不到的新数据就会被丢弃。因此,有必要考虑并计算用外部数据流填满读取缓冲区的预期时间。
为此,您可以参考长度和超限输出块 BA-IS-XX UART-TX 的值。在模型内的计算中,应准确考虑输出 RX 块中的元素数量以及实际接收到的数量(输出长度)。RX 数组所有其他元素的值未定义。
如果在超限块输出端输出非零值,则表示硬件缓冲区溢出,硬件接收缓冲区中的数据丢失。在这种情况下,可以减少 BA-IS-XX UART-TX 块的计算步长,以便更频繁地读取数据,从而避免接收缓冲区溢出。也不应将 BA-IS-XX UART-TX 数据块的计算步长设得太小,而应根据具体的交换协议来确定。例如,如果知道外部设备发送的命令为 8 字节,则可以选择这样的数据块计算步长,即从计算步长到计算步长的输出长度值近似等于 8
。