Thread 中讨论的其他器件: AWR1843BOOST、 AWR2944
工具/软件:
您好、
我正在我的 AWR2944EVM 上运行开箱即用 (OOB) 演示、它使用 TI 的在线可视化工具时符合预期。
我想使用自定义工作流程、类似于使用 AWR1843BOOST、通过 CLI/UART 读取 TLV 数据包。 这样、当我将自己的 CLI 命令添加到雷达固件中时、我可以直接在 Python 中解析它们的输出、因为在线演示无法修改。
在 TI 的文档中、每个 TLV 帧都以“输出缓冲器魔术字“开头。 此处有相关文档: dev.ti.com/.../node (单击下载按钮查看它,否则它看起来为空白)。 这些文档列出了此 16‑位字的序列:{0x0102、0x0304、0x0506、0x0708}。 在小‑端字节序主机上、成为字节阵列[2、1、4、3、6 5、8、7]、python 脚本在 1843 的 UART 流中成功找到该内容。
但是、尽管两个在线演示使用相同的 UART 波特率、但完全相同的代码仍无法在 AWR2944EVM 的 TLV 输出中定位该序列。 我在‑的用户指南中找不到任何器件特定的说明来介绍 2944 的不同神奇之词。
我的问题是:
- AWR2944EVM 是否使用了不同的魔术字?
- 如果应该是相同的、为什么我的脚本(在 1843 上工作)在 2944 上无法检测到它?
此致、
标记
上述代码:
导入序列
导入时间
将 NumPy 导入为 NP
ConfigFile =“C:/Users/mmpas/PycharmProjects/liveComAWR/Data/profile_onlineDemo.cfg
COM_UART =“COM13"</s>“
COM_AUX_DAT =“COM12"</s>“
CLIport = serial.Serial (COM_UART、115200、超时=0.2)
数据端口=串行。串行 (COM_AUX_DAT、921600、超时=0.2)
Time.sleep (1.0)
CLIport.reset_input_buffer()
ByteBuffer = np.zeres (2 ** 15、dtype='uint8')
byteBufferLength = 0;
DEF sendConfigFile (cfgfile、settle=0.05):
对于 open (cfgfile) 中的行:
如果不是 LINE.StartsWith ('%'):
CMD = LINE.STrip ('\r\n')
CLIport.write (cmd +'\n').encode ())
CLIport.flush()
打印 (cmd)
时间睡眠 (0.01)
DEF readTlc_messages(数据端口):
全局 ByteBuffer、byteBufferLength
#常量
obj_struct_size_bytes = 12;
BYTE_VEC_ACC_MAX_SIZE = 2 ** 15;
MMWDEMO_UART_MSG_DETECTED_PORTS = 1;
MMWDEMO_UART_MSG_RANGE_PROFILE = 2;
maxBufferSize = 2 ** 15;
tlvHeaderLengthInBytes = 8;
pointLengthInBytes = 16;
MagicWord =[2、1、4、3、6 5、8、7]
#初始化变量
magicOK = 0
DataOK = 0
frameNumber = 0
detObj ={}
readBuffer = dataort.read (Dataport.in_waiting)
打印 (readBuffer)
byteVec = np.frombuffer(readBuffer、dtype='uint8')
byteCount = len (byteVec)
#检查缓冲区是否满,然后将数据添加到缓冲区
如果 (byteBufferLength + byteCount)< maxBufferSize:
ByteBufferLength:byteBufferLength + byteCount]= byteVelc[:byteCount]
byteBufferLength = byteBufferLength + byteCount
#----- <<<检查魔术字的位置、将其用作 strat 索引>>>-------------------
#检查缓冲区是否有数据
如果 byteBufferLength > 16:
#检查魔术字的所有可能位置
possibleLocs = NP.WHERE (ByteBuffer = magicWord[0])[0]
#确认这是魔术字的开头,并将索引存储在 startIdx 中
startIdx =[]
对于在可能位置中的位置:
检查= ByteBuffer[loc:loc + 8]
如果 np.all (check == magicWord):
startIdx.append (loc)