msp430与计算机的通信

时间:2015-08-13 23:50:02

标签: embedded usb communication msp430

我正在尝试与我的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从电阻力传感器读取信号,然后将数据拍摄到电脑上。

要查看我正在谈论的所有代码,您可以下载德州仪器示例文件夹here [警告:链接开始下载,查看我来自的页面here )。

1 个答案:

答案 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部分。