我正在尝试与我的MSP430F5529 LaunchPad进行通信,我刚学习微控制器并遇到一些严重的问题。
我使用德州仪器(TI)的示例下载了MSP430 USB开发包,并使用IAR作为我的IDE。
在示例文件夹中,对于不同的协议,它们的示例相同:HID,CDC,Composite,MSC和SYSBIOS。
我决定点击HID并在该文件夹中探索DataPipe文件夹并转到H0_SimpleSend,这似乎是第一个也是最基本的示例项目。
在内部,它似乎有许多项目文件夹和文件,如USB_Config,USB_app,IAR,GCC,CCS_GCC,CSS,以及文件system_pre_init.c,main.c,hal.h和hal.c.
在IAR文件夹中是一个项目和工作区文件,所以我加载了项目,希望它能够在我的电路板上构建项目并在使用Termite与COM端口通信时运行调试。
当我插入我的MSP430F5529LP窗口时,有两个COM端口使用,一个说MSP应用程序UART1,一个说MSP调试接口,它们总是连续的COM端口(分别是COM11和COM10,或COM12和COM13)。 )。我假设我想要UART,所以我将Termite设置为与应用UART1通信,其中8位数据和1位停止位,没有奇偶校验位。
然后我构建了程序,它构建得很好,并将其加载到我的主板上。
单步执行程序似乎永远不会奏效。它总是卡在这个块上:
// This function begins the USB send operation, and immediately
// returns, while the sending happens in the background.
// Send timeStr, 9 bytes, to intf #0 (which is enumerated as a
// COM port). 1000 retries. (Retries will be attempted if the
// previous send hasn't completed yet). If the bus isn't present,
// it simply returns and does nothing.
if (USBCDC_sendDataInBackground(timeStr, 9, CDC0_INTFNUM, 1000))
{
_NOP(); // If it fails, it'll end up here. Could happen if
// the cable was detached after the connectionState()
} // check, or if somehow the retries failed
有时在调试会话期间窗口会说我的设备已经被删除。
我做错了什么?
我不确定所有这些协议是什么,什么是CDC或HID,为什么我会使用其中一个。似乎USB通信非常复杂...... Energia和Arduino使用Begin.Serial(9600)看起来很容易,但我想学习"真正的" IAR的方式,因为我是嵌入式系统的初学者。
我应该继续努力吗?或者在我试图让usb通信工作之前,我是否需要首先理解这些材料?
我不想做任何与USB太高的事情,我只是想用ADC12从电阻力传感器读取信号,然后将数据拍摄到电脑上。
答案 0 :(得分:0)
USB是一套相当复杂的协议。
COM端口的USB协议称为CDC(通信设备类),而不是HID。
在F5529上实现(虚拟)COM端口时,它在主机PC上显示为第三个端口。
F5529有两个真正的'个UART。 第一个是BoosterPack连接器。 第二个连接到eZ-FET CPU,它实现了UART到USB接口;这是"应用程序" UART。
使用应用程序UART更容易,因为您不必实现USB设备;你只需要直接使用USCI_A1模块,另一个CPU负责USB的工作。
阅读LaunchPad用户指南的2.2.3和2.2.6部分。