您好!
Q1>[图1]和[图2]中的绿色条是否不变?
绿条总是满的。
此致。
Jame、Shin
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
Q1>[图1]和[图2]中的绿色条是否不变?
绿条总是满的。
此致。
Jame、Shin
Jame、您好!
我认为绿条总是满的是正确的。 当它全绿色时、表示它是空的。 如果有转印、绿色条的一部分将用红色填充。
当它在 main()中首次初始化时, 调用 DrawBufferMeter()。 如果您看 一下 DrawBufferMeter 的源代码,它有以下代码,表示该表用绿色填充,表示为空。
//
//用绿色填充仪表以指示为空
//
环境 ForegroundSet (psContext、ClrGreen);
GrRectFill (psContext、&sRect);
//
//在仪表周围放置一个白色框。
//
环境 ForegroundSet (psContext、ClrWhite);
GrRectDraw (psContext,&sRect);
另请查看 UpdateBufferMeter() API,其中部分或全部绿色条根据传输状态填充为红色。
//
//用红色填充整个部分(如果有任何要绘制的内容)
//
if (ui32FullPercent)
{
环境 ForegroundSet (psContext、ClrRed);
GrRectFill (psContext、&sRect);
}
//
//用绿色填充空白部分。
//
sRect.i16XMin = i32XBreak;
sRect.i16XMax = i32X + buffer_meter_width - 2;
if (sRect.i16XMax > sRect.i16XMin)
{
环境 ForegroundSet (psContext、ClrGreen);
GrRectFill (psContext、&sRect);
}
您好、Charles、
感谢你的答复。
我用您的回答对其进行了分析。
示例源代码似乎有问题。
当 ui32Fullness 值变为常量时、无条件地绘制一条红色条。
绿色条再次高速覆盖、眼睛看不到。
如何在带有色条的 FIFO 中显示数据?
//由主函数调用。
DrawBufferMeter (&g_sContext、40、22);
DrawBufferMeter (&g_sContext、40、42);
//自上次检查以来是否有任何(发送或接收)流量?
发送 到 UART Tx 到 USB Rx 缓冲区的1个字节 (1 * 100)/256=0.390625, 结果0
发送到 UART Tx 到 USB Rx 缓冲器的100字节 (100*100)/256 = 39.0625, 结果39
ui32Fullness =((USBBufferDataAvailable(&g_sRxBuffer)* 100)/ UART_buffer_size);
UpdateBufferMeter (&g_sContext、ui32Fullness、40、22);
ui32Fullness =((USBBufferDataAvailable(&g_sTxBuffer)* 100)/ UART_buffer_size);
UpdateBufferMeter (&g_sContext、ui32Fullness、40、42);
//用红色填充整个部分(如果有任何要绘制的内容)
UpdateBufferMeter (tContext *psContext、uint32_t ui32FullPercent、int32_t i32X、int32_t i32Y)
{
//确定在完全(红色)段和空(绿色)段之间的断点发生的位置。
i32XBreak =(i32X + 1)+(ui32FullPercent *(buffer_meter_width - 2)))/ 100;
Case1> //(40+1)+(0 * 54)/ 100 = 41 + 0 = 41
CASE2>// (40+1)+(39 * 54)/100 = 41 + 21.06 = 62
if (ui32FullPercent)
{
环境 ForegroundSet (psContext、ClrRed);
GrRectFill (psContext、&sRect);
}
//用绿色填充空白部分
sRect.i16XMin = i32XBreak;
sRect.i16XMax = i32X + buffer_meter_width - 2;
if (sRect.i16XMax > sRect.i16XMin)
{
GrRectFill (psContext、&sRect
环境 ForegroundSet (psContext、ClrGreen););
}
//恢复为白色,以便稍后进行文本绘图。
环境 ForegroundSet (psContext、ClrWhite);
}
此致、
Jame、Shin
Jame、您好!
请记住 USB 和 UART 在缓冲区大小方面的区别。 全速 USB 批量传输可以缓冲64字节的数据、而 UART 有一个小得多的 FIFO 缓冲区(即16)。 因此、当 UART 接收时、UpdateBufferMeter 的调用频率会比 USB 端口接收时更频繁(快得多、快4倍)。 请注意、对于 RX 条、ui32Fullness 是相对于 UART 的接收缓冲区的。
// //更新 TX 缓冲区的全性能。 请记住缓冲器是 //相对于 USB 命名,而状态显示为 // UART 的视角。 USB 的发送缓冲区是 UART //接收缓冲区。 // ui32Fullness =((USBBufferDataAvailable (&g_sTxBuffer)* 100)/ UART_buffer_size);
UpdateBufferMeter (&g_sContext、ui32Fullness、40、42);
您好、Charles、
感谢你的答复
我理解您的说法。
PC 主机 USB0 (Stellaris 串行 USB) TX --- > ICD-EVB --- >Rx 16x8位 FIFO -------------------
1 2. |
PC 主机 USB1 (TivaWare 串行 USB) RX <--- USBDEV-EVB <--- USB Tx 缓冲器(g_pi8USBTxBuffer[256]) <--
USBDCDC
PC 主机 USB0 (Stellaris 串行 USB) RX <--- ICD-EVB <--- TX 16x8位 FIFO -------------------------------------------------------
1 2. |
PC 主机 USB1 (TivaWare 串行 USB) TX --- >USBDEV-EVB --- > USB Rx 缓冲器(g_pi8USBRxBuffer[256]) --
USBDCDC
1:批量输入/输出、中断输入、结束0 64字节/s
2、硬接线 Tx/Rx FIFO 大小16字节
Q1>通过在 UARTFIFOLevelSet ()函数中设置 FIFO 中断级别、UART_FIFO_TX4_8是什么意思 ?
将填充4个字节、占 FIFO 总大小的25%。 因此、USBUARTintHandler ()函数被调用四次。
总之,UpdateBufferMeter ()函数被调用16次!!
此致、
Jame、Shin
Jame、您好!
请转至 uart.h 文件以了解宏定义。
// // //可以作为 ui32TxLevel 参数传递给 UARTFIFOLevelSet 并由 UARTFIFOLevelGet 在 pui32TxLevel 中返回的值。 //// ***************** #define UART_FIFO_TX1_8 0x00000000 // 1/8满 #define UART_FIFO_TX2_8时的发送中断 0x00000001 //发送中断(1/4满 #define UART_FIFO_TX4_8) 0x00000002 //半满时发送中断 #define UART_FIFO_TX6_8 0x00000003 //发送中断3/4满 #define UART_FIFO_TX7_8 0x00000004 //在7/8满时发送中断 //********* // //可以作为 ui32RxLevel 参数传递给 UARTFIFOLevelSet 并由 UARTFIFOLevelGet 在 pui32RxLevel 中返回的值。 //// ***************** #define UART_FIFO_RX1_8 0x00000000 // 1/8满 时的接收中断#define UART_FIFO_RX2_8 0x00000008 //在1/4满 #define UART_FIFO_RX4_8时接收中断 0x00000010 //在1/2满 时接收中断#define UART_FIFO_RX6_8 0x00000018 //接收3/4满#define UART_FIFO_RX7_8的中断 0x00000020 //接收中断7/8已满
朋友 Jame、
Crack 员工注意到 Pumpkin #1和 CB1之间的"不可开"相似之处。 (CB1在"良好"的一天... 然而,南瓜却“避开”CB1的“1000码石!”) 幸运的是、没有信号显示:栓腿、神经/水槽或脚踝手镯/监视器。 (员工告诉你——法官不喜欢我……)
让记录表明、"很久以前"- CB1 (婴儿)的"错误的 incisors"从牙齿童话中获取"最高美元"。 新植入的是*喜欢的*-由工作人员和大白人。 (鲨鱼 ... 因为 我们共享同一个"错误的植入体团队...")
我们的"后台"办公室(以某种方式)在每一个万圣节都变得"受欢迎"。 (员工-令人诱惑的是:法国女佣、Stern Nurses 和 Witches - 可能会提高我们公司的形象-至少在那一天...)
标签:否:'5x5字体、实时更新列表框或黑色猫'-在创建此(类似)帖子时受到损害...
朋友 Jame、您好!
什么-"您的"线程现在是否已升至另一个"不可伦和不可缓冲"区域? 这种独特性/精神在哪里?
工作人员注意到,您送我们的南瓜“到达还不错”,但时间过了,不是很好! (这里的员工注意到(现在)您的南瓜和'CB1'(由于轻微老化)都必须接受'极端治疗!' (例如、"重建塑料手术"和"希望不高"-两者都是...)
标签: "提问"可能"不是必需的"-对于我们商店的某些人-下一个万圣节...
您好 Jame、
请务必感谢供应商的 Charles 快速而完整的回答! (关于他的明确指导: USABufferRad()和 USBBufferWrite()。)
假设"装满溢出的碗"-包括 一个很好的罕见的层块、"菲力牛排"-在蔬菜旅下面缠住(短暂)。 我们的"成长中的男孩"需要"真正的蛋白质"-您会意识到。
员工大约在20分钟内到达-他们会建议/告知您的 UART_TX 问题... (他们肯定会"注意"您包含的"正确的、汇总后的标签"、而不是默认值(哦、太糟糕了-非描述性)...)
"翻滚"-裂缝 crüe 报告(这是直接从'351'手册收集的):
"为了进行传输、数据被写入发送 FIFO。 如果 UART 模块使能、那么将按照 UARTLCRH 寄存器中的参数开始发送数据帧。 数据将继续传输、直到发送 FIFO 中没有剩余的数据。"
和
' FIFO 产生中断的触发点由 UART 中断 FIFO LEVELSelect (UARTIFLS)寄存器(见922页)控制。 两个 FIFO 都可以单独配置为在不同级别触发中断。 可用配置包括⅛、¼、½、¾和⅞。"
现在-针对您的具体问题:
1) 1)"当数据写入 TxFIFO 时、是否会立即自动发送到 UART0 Tx 引脚?" 您对"立即"的定义是什么? (这很重要-不是吗?) 未启用 FIFO -员工注释(near)来自 UARTn_TX 的立即输出。 (通过 O 范围观察到)
2) 2)"是否根据 FIFO 存储器中的中断级别50%设置将其发送到 UART0 Tx?" 本手册从未具体说明 UART 输出与中断级别之间的链接。 (或者-员工和我无法(轻易)找到它。) 怀疑 UART_TXN 输出被中断级别"扣为人质"-您应该能够设计一个简单的测试进行确认。 (员工不懒惰-这是一个很好的"学习工具...")
您好 CB1、
CB1说>您对"立即"的定义是什么? (这很重要-不是吗?)
a>在 USB_DEV_serial API 中、UART_FIFO_TX4_8通过一半 FIFO (16个字节中的8个字节)或50%中断配置启用
CB1说>不启用 FIFO -员工注释(near) UARTn_TX 的立即输出。 (通过 O 范围观察到)
a> 即 、从 USB1传输串行终端发送1个字节字符立即从 USB0接收串行终端接收1个字节字符。
Q1>用 CB1和教职员工的话来说、如果启用 FIFO、它是否会等待 FIFO 中的8个字节、然后将其打印到下一个 USB0 (通过 ICD)接收终端窗口?
(自我反思,我的想法和行动很懒,现在没有 O 范围)
此致、
Jame、Shin
向本论坛的"艺术总监"致以问候。 虽然您的创造力(可能)"有些疼痛"-但您已经为另一种"贫瘠的平原"增添了活力。
尽管周日晚8点才到-只有3名员工“进来”-我们所有人(突然)都饿了! ("感谢"(以某种方式)论坛的艺术总监!)
没有示波器会使您处于"真正的劣势"-尤其是在部署串行接口时。 (即 SPI、I2C、CAN -最显著)
这句话——不是一个“创意和资源”足以向这个“菲力牛排”(否则)“剪切/粘贴普通”——能够“想象”“替换/替换”?
现在、范围提供了两个主要优势:
现在-要回答您的特定问题- 不仅是"到达时间"(甚至是"如果信号到达")-您的真正问题吗?
这里的年轻员工认为、"是这样的"、因此可以 (以某种方式)检测到信号的"到达/存在"、但 又不能检测到示波器?
员工-"破坏"您的"艺术档案"(至少在"档案"中)-演示:
此外、当"存在、生成(和/ 或脉动)"证明感兴趣和/或值时、"足够的范围替代"。
虽然"计时"信息 似乎不可用-也可以通过(富有想象力)"精简":
标签: 当"无范围"证明"无借口!"时 (现在这是一个"正确的标签!")
Jame、
Jame shin 说:Q1>用 CB1和职员的话来说,如果启用 FIFO,它是否会等待 FIFO 中的8个字节,然后将其打印到下一个 USB0 (通过 ICD)接收终端窗口?
无论是否处于 FIFO 模式、只要您写入 FIFO、传输就会开始。 有一个16字节深的 TX FIFO。 生成 TX 中断的阈值是可编程的。 假设您将 TX 中断 FIFO 触发电平编程为1/2。 这意味着只有在 FIFO 中有8个字节或更少字节时才会产生中断。 处理器可能以突发方式向 TX FIFO 写入16个字节。 在第一个字节被写入 TX FIFO 后、发送开始。 如果您使用示波器进行捕获、则应立即在 UART TX 引脚上看到开始位。 在8个字节被发出后、FIFO 中只剩下8个字节。 这是产生 TX FIFO 中断通知处理器向 TX FIFO 写入更多数据的时间。
您好、Charles、
是否可以注意到-此类"非常相似"的数据"之前已"提交到该海报中?"
[引用 USER="CB1_MOBILE"]
"翻滚"-裂缝 crüe 报告(这是直接从'351'手册收集的):
"为了进行传输、数据被写入发送 FIFO。 如果 UART 模块使能、那么将按照 UARTLCRH 寄存器中的参数开始发送数据帧。 数据将继续传输、直到发送 FIFO 中没有剩余的数据。"
和
' FIFO 产生中断的触发点由 UART 中断 FIFO LEVELSelect (UARTIFLS)寄存器(见922页)控制。 两个 FIFO 都可以单独配置为在不同级别触发中断。 可用配置包括⅛、¼、½、¾和⅞。"
[/报价]