simulink接收串口数据_JLink RTT连接Simulink

4ed16a8e50da837998aa6ff92cd27e86.png

JLink及其RTT功能简介

JLink是SEGGER开发的用于DEBUG ARM核芯片的仿真器,支持SWD,JTAG。JLink Pro支持最高SWD频率达50MHz,普通JLink V10也支持20MHz。包含有很多其它仿真器不具备的功能,例如JLink RTT可以用来与上位机高速交互数据,JLink Scope可以高采样查看程序变量。因为JLink Scope GUI界面不方便操作以及不可下发参数这些缺点,萌发了给Simulink开发驱动直连JLink的想法。

JLink RTT的原理是在处理器RAM中建立一段交互缓存,通过ARM核调试总线上传下载,不占用CPU时间。使用JLink RTT不需要额外的连接,只需要基本的四根线(SWCLK,SWDIO,GND,VCC)即可通讯,发送速度快,不占用CPU时间,只是简单拷贝内存的时间。RTT发送接收数据需要在代码增加RTT读写函数,详细见以下两链接。

ea8382863832e69f3fca6ef0298e346d.png

调试备忘录-J-Link RTT的使用(原理 + 教程 + 应用 + 代码)

Jlink 使用 RTT 输出调试信息总结

Simulink连接JLink RTT

当IDE软件(MDK, IAR等)进入仿真模式时,自动调用JLink,默认不会打开RTT功能。点击桌面右下角Jlink小图标,打开JLink Web界面,在RTT选项卡中设置Control block address,此地址为_SEGGET_RTT变量的内存地址,然后点击Start。

adf5ffd8dea961f04a09c227d72ead50.png

JLink RTT会打开TCP端口19021的Telnet服务器,一旦Socket连接端口,JLink驱动会不断从此端口转发数据。这种方式有一定缺陷,无法发挥JLink Pro最大性能,转发速度最大不超过800kb/s。如果希望获得更高性能,可以直接调用JLink SDK,JLink Pro最高传输速度可达2.5Mb/s。可通过Matlab调用Python。或者C语言直接调用JLink SDK,接口可以从python反推出来。

JLink SDK Python库

Simulink通过socket方式连接RTT要点

  1. 传输速度最高不可超过800kb/s,否则JLink RTT Telnet服务器转发速度跟不上,一般用途不影响,也可通过直接JLink SDK编程解决此问题。
  2. 数据读取有可能错位,需要设置包头,在Simulink RTT读取驱动中查找包头,进行切割输出,保证每次数据都是正确的一帧。例如单片机20kHz速度上传变量数据,设置Simulink为10Hz读取。每次读取进来2000帧数据,可设置单片机每2000次传输一次'START'字符,Simulink读取2000帧数据查找'START'字符进行数据对准。
  3. 下发数据暂时没发现坑,单片机读取下载区缓存,有数据就读取更新。
  4. Simulink示波器模块需设置成(输入基于帧)
  5. 具体Simulink S Fcuntion编程可仿照自带TCP/IP Receive和TCP/IP Send模块,进行特殊功能更改,添加查找字符串对齐帧数据功能。

cfd089ebb505885c3a5bd97fdb447347.png

032142e04242fd8019f0f0a8fb189152.png

下图为JLink Pro按20kHz上传数据效果,正弦波频率为100Hz,基本无锯齿。对于电机控制而言,可进行在线调参。或者直接上传数据,PC机进行在线分析计算实现更高级的算法。

7830c05b7b3611431d57c48d2692d2bf.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值