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.
工具/软件:Code Composer Studio
您好,
这是我目前正在处理的问题:
到目前为止,我可以与启动台进行通信,也可以从启动台进行通信。 我正在尝试理解和控制ADC,并创建了几个简单的Simulink程序来对其进行测试。 我的问题是,我能够控制ADC,但我无法从ADCRESULT寄存器获取值,以便通过SCI发送到终端进行验证。 一个程序只是每5秒发送一个值,我可以看到我现在用来定义结果的“["标题和"]”终结符,但它们之间没有任何内容。 虽然ADC可能不工作,但如果我进入CCS并观看ADCRESULT寄存器,我就可以看到当我向输入引脚施加电压时,值会相应地变化。 我不确定我做了什么错,论坛上的其他帖子也没有真正回答类似的问题。 是否有人可以为我说明一下这一点? 谢谢你。
伊恩
现在我们知道您的传输有问题,但我们不知道该问题在链中的位置。 如果我的理解正确,则您的系统数据流 具有如下内容:
电压源--ADC--SCI--Matlab终端
电压源->ADC:
听起来您可以看到ADC寄存器中的值,因此此连接看起来正常。
ADC->SCI:
这听起来不像您检查了这些值是否已从ADC寄存器正确复制到SCI传输寄存器。 检查值是否正确传输!
SCI -> Matlab终端:
您正在获取一些数据,但缺少一些数据。 这里可能会出现问题,但由于我们看到了一些数据,因此它不是“最”可能出现问题的地方。
有一件事可能对您有帮助:尝试发送文字值而不是ADC结果。
希望它有所帮助!
此致,
科迪
伊恩
您是否解决了此问题? EALLOW不影响所有寄存器您可以在 系统控制和中断指南 的5.2 部分找到描述。 EALLOW只是内存中的一个位,当清除时不允许写入某些寄存器,它不会影响读取。 这是一项安全功能,在调试代码时,始终启用EALLOW会很有帮助,当然在实际应用程序代码中,强烈建议 禁用它。
此致,
科迪
伊恩
尝试从 controlSUITE 示例开始,根据需要使其工作,并查看代码和示例之间的不同之处。 请务必进行小幅增量更改。 一个好的启动项目是SCI_echoback,scia_loopback,甚至是scia_looping_interrupts。 如果这些项目中有任何一个使用简单终端(如PuTTY)工作,那么切换到使用Simulink与设备通信应该非常容易。
编辑:其中一些示例使用内部回送,这会在内部将Tx连接到Rx,因此您发送的任何内容都将直接发送到接收器...这可以禁用。 SCI用户指南 将详细介绍如何启用此功能,请参阅“SCICCR”寄存器的环回ENA位。
希望它有所帮助!
科迪
我不确定我是如何错过这个主题的... 您能否分享模型? 另外,请检查视频的结尾部分,了解Simulink示例:
此致,
Gautam
您好,Ian:
我向我的开发团队征求意见。 他们进行了一次快速测试,并能够使其正常工作。 他们提供了一些反馈和建议-我将其粘贴在下面。
---
问题可能出在“putty”工具,因为它一次采样8位数据,并显示相同的ASCII等效字符。 因此,当我们发送大的原始ADC值时,该值被分解为8位的数据包,每个数据包都将作为其ASCII等效值进行回显。 这不 是用户从ADC块中获得的内容与他在PuTTY终端中看到的内容的1:1匹配。
因此,如果用户可以访问主机“Instrument Control Toolbox (仪器控制工具箱)”中的“Serial Receive (串行接收)”块,则可以使用该块进行验证。 请注意:为了简单明了,我不使用任何标头/终结器。
向用户提供的一些建议:
---
HTH,
-Brian
我设置超级终端以接收来自TI的串行信息。 这一次确实显示了一个"值",但这不是我所期望的。 如图所示,从0V至1V输入到ADCIN的方括号中没有任何内容。 然后,从1V到2V左右,有一个白色笑脸。 2V或更高电压会产生黑色面部。 这告诉我ADC和SCI之间有一些通信,否则当我改变电压时,它不知道显示什么。 但它仍然不是我可以使用的值。
我正在附加终端,Simulink和CCS的屏幕截图。 我让大家查看我的内容并添加一些评论
这是我在Simulink中设置的程序
Simulink设置:
我在CCS中观看的寄存器的屏幕截图。 当我升高或降低电压输入时,我可以观察ADCRESULT0的变化值,但SCI寄存器不起作用。
您好,
从模型中, 产品块的输出是以IEEE754格式存储在内存中的浮点值。
从下图中,产品值2.7512 (伏特)存储为0x40.3013万CE (在CCS中以十六进制格式显示)。 因此,当我们使用SCI传输2.7512 伏特时,它将这些位于内存中的十六进制字节(一次8位)转换为Tx,这些字节共同表示2.7512 的浮点值。 现在,当我们使用putty或HyperTerminal之类的工具时,这些十六进制字节(每次8位)以ASCII格式表示。 这是因为这些中间表示数据看起来不正确。
重新构造2.7512 的原始浮点值的最佳方法是编写一个例程,该例程执行 将这些字节打包在一起的任务,并从其中派生十进制表示。 这可以通过查找与串行终端上接收的ASCII字符等效的十六进制值来手动确认,并对其进行打包,然后使用IEEE754转换器获得十进制等效值。 常用工具可从以下网址获得:
https://www.h-schmidt.net/FloatConverter/IEEE754.html
仪表控制工具箱中的串行接收块执行相同的操作。
加热
此致,
Venkatesh C
附注:您的案例中的SCI注册商具有正确的值。 SCITXBUF - 0x005D只是用于终结符']'的ASCII代码。