J3 UART4的通信格式写的粗,不是很容易手写数据去做简单调试。可否有一些标准的UART 串来学习下
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.
J3 UART4的通信格式写的粗,不是很容易手写数据去做简单调试。可否有一些标准的UART 串来学习下
有一个简单例子:
Read Tiva version information:读TIVA 版本信息:
CommandID:
NNO_CMD_TIVA_VER
接口在UARTCmdHandler.c中:
cmdUARTRead(CMD1_TYPE cmd1)
查询到ID号码:
在cmdDict.c
的第56行(大约)
{ NNO_CMD_TIVA_VER, cmdVersion_rd }, /* 0x0216 */
具体在cmdProc.c
1125行实现:
bool cmdVersion_rd( void ) /* 0x0216 */
具体看需要DLPC150版本, TIVA版本信息和
EEPROM_CALIB_VER_ADDR组成.
Tiva SW Version (4)
● ● DIS(2)
DLPC SW Version (4)
DLPC Flash Version (4)
DLP Spectrum Library Version (4)
EEPROM Calibration Version (4)
EEPROM Reference Version (4)
EEPROM Scan Configuration
Version(4)
整个驱动在uartstdio.c中.
对于PC端,参考: NIRScanNanoGUI:
中API.cpp
第63行: static int NNO_Read(int isUART = 1 )
具体调用在
mainwindow.cpp
49行读 deviceStatus:
if((ret_val = NNO_ReadDeviceStatus(&device_status)) == PASS)
和testtab.cpp
175行:
读电池电压:
if ( ( result = NNO_ReadBattVolt( &pBatt_Volt ) ) == PASS )
USB可以工作,但UART突然出问题:永远回复41 42 43 44 10 00 00 00 10 00 00 00 44 43 42 41。之前很多命令都得到正确的回复的
UART to USB的转换板有问题了,换了另一块,UART通信就正常了。
但送出NNO_CMD_FILE_GET_DATA命令(c0 00 02 00 2e 00)后,响应不正确。
谢谢!Jeremy Wu先生麻烦给我发邮件,teddyguo@126.com
看了源码,找到了ScanDataStruct,以及InterpretDataStruct,但与USB抓包数据还没能对照上。
我是用一个资源有限的MCU来读取NIRScanNano的UART的数据,然后再与装置中的其他数据一起通过WiFi发送出去。本人一直是做汇编,C不是很熟。可否帮忙解释下ScanDataStruct,最好是与USB抓包数据对应上。(可提供USB抓包数据)
另:UART通信现在正常,只是还没能正确读取到ScanData,发送NNO_CMD_FILE_GET_DATA时,Tiva回复10 00 00 00 10 00 00 00,错误命令。
在看源码,有关GUI命令及数据传送部分都可与UART相关,感觉可以单独用UART连接到pc,且GUI软件是可以认的。
但我不接USB,只接UART,GUI软件上不能认可连接上。
不知如何去设置GUI,使得用UART也能执行scan并获得回传数据,显示波形。
GUI保存在PC里的CSV文档和dat文档,其中CSV文档的intensity数据列可以画出正确的感度曲线。但在dat中似乎找不到对应的数据,查看源码,尚未看明白CSV的数据是如何产生的。
本人C和C##的水平太low,只能看懂语句,数据结构倒来倒去就给烧拧了。
哪位高人帮忙梳理一下:scanData结构是如何解析到scanResults结构的。万分感谢~
hi Jeremy
dlpspec_scan.h 中定义的解析函数能提供源码么,目前是个.a 的库文件,想知道是如何解析扫描数据的。
谢谢~
如:
DLPSPEC_ERR_CODE dlpspec_scan_read_configuration(void *pBuf, const size_t bufSize);
DLPSPEC_ERR_CODE dlpspec_scan_write_configuration(const scanConfig *pCfg, void *pBuf, const size_t bufSize);
DLPSPEC_ERR_CODE dlpspec_scan_interpret(const void *pBuf, const size_t bufSize, scanResults *pResults);
DLPSPEC_ERR_CODE dlpspec_scan_write_data(const scanData *pData, void *pBuf, const size_t bufSize);
DLPSPEC_ERR_CODE dlpspec_scan_interpReference(const void *pRefCal, size_t calSize, const void *pMatrix, size_t matrixSize, const scanResults *pScanResults, scanResults *pRefResults);
int32_t dlpspec_scan_genPatterns(const scanConfig* pCfg, const calibCoeffs *pCoeffs, const FrameBufferDescriptor *pFB);
DLPSPEC_ERR_CODE dlpspec_scan_bendPatterns(const FrameBufferDescriptor *pFB , const calibCoeffs* calCoeff, const int32_t numPatterns);
从ti官网上下载DLPSpectrumLibrary 2.0.3,安装后就有source code了