在线时间1071 小时
UID3124330
注册时间2015-11-26
NXP金币46659
TA的每日心情 | 开心 2019-3-5 08:47 |
---|
签到天数: 1 天 [LV.1]初来乍到
金牌会员
 
- 积分
- 7386
- 最后登录
- 2023-12-1
|
本帖最后由 jundao721 于 2023-6-23 16:16 编辑
假期这两天天气太热了,继续RT176外设的测试。这次测试USB FS通讯,连接如图1所示.
图1
使用的测试城市是SDK中的RT1176\SDK_2_13_1_MIMXRT1176xxxxx for xpresso\boards\evkmimxrt1170\usb_examples\usb_device_hid_generic这个项目。开始遇到点小问题,连接的是USB2,没有任何反应,检查软件和硬件布线也没什么问题,设备描述符一点反应没有。后更换到USB1接口,一切正常。想来是软件的问题,找到这句代码:
- #ifndef CONTROLLER_ID
- #define CONTROLLER_ID kUSB_ControllerEhci0
- #endif
复制代码 将kUSB_ControllerEhci0更换为kUSB_ControllerEhci1,USB2就能使了。
在USB_DeviceApplicationInit中修改speed。
测试数据收发的时候,修改了callback函数和主函数中while的代码,就符合本人理解和测试的习惯了。callback中如下修改:
- USB_DeviceHidRecv(g_UsbDeviceHidGeneric.hidHandle, USB_HID_GENERIC_ENDPOINT_OUT,
- (uint8_t *)&g_UsbDeviceHidGeneric.buffer[g_UsbDeviceHidGeneric.bufferIndex][0],
- USB_HID_GENERIC_OUT_BUFFER_LENGTH);
- R_flag=1;
复制代码 callback函数中只保留了接收部分,并写了一个标志位,将接收到的数据再发送给上位机,就由while中完成,修改如下:
- while (1U)
- {
- #if USB_DEVICE_CONFIG_USE_TASK
- USB_DeviceTaskFn(g_UsbDeviceHidGeneric.deviceHandle);
- #endif
- if(R_flag==1)
- {
- R_flag=0;
- for(uint8_t i=0;i<USB_HID_GENERIC_OUT_BUFFER_LENGTH;i++)
- {
- RData[i] = g_UsbDeviceHidGeneric.buffer[g_UsbDeviceHidGeneric.bufferIndex][i];
- }
- USB_DeviceHidSend(g_UsbDeviceHidGeneric.hidHandle, USB_HID_GENERIC_ENDPOINT_IN,
- (uint8_t *)&g_UsbDeviceHidGeneric.buffer[g_UsbDeviceHidGeneric.bufferIndex][0],
- USB_HID_GENERIC_OUT_BUFFER_LENGTH);
- }
- }
复制代码 由于测试用的上位机软件,只支持64字节的收发,所以将USB_HID_GENERIC_OUT_BUFFER_LENGTH修改为64。
对了,同时,还要修改一下描述符。测试结果如图2所示:
图2
在重新测试过程中,没注意电源线反了,MP2143就报销了,换了几片接5V就报销,没找到原因(没芯片了)。然后从图上可以看出电源部分换成了1117-3.3,先这样使吧。在此记录一下,想来电源接口设计为防反接或者USB口比较好。
|
|