coolflyreg

Results 29 comments of coolflyreg

> 装好了驱动,设备管理器上能看到ELECTRONBOT, 一样也是花屏。 R16电阻无误 花屏不是问题,那是因为初始化,内存里的噪点。我现在虽然把屏幕初始化的时候,用颜色清了屏幕,不是噪点了,但是 - 主控板卡在:electron.SendUsbPacket(electron.usbBuffer.extraDataTx, 32); - ElectronBotSDK-LowLevel里的Sample卡在:_obj->ReceivePacket(reinterpret_cast(_obj->extraDataBufferRx), 1, 32); 我是Mac系统,在USB串口里,能看到ElectronBot@PZH,并且能识别到480Mb/s,/dev/ 下也有对应设备。我把舵机的I2C传输屏蔽了,现在就是无法传输USB数据。。。

**以下方法适合明确知道自己在干什么的小伙伴使用,不清楚自己在干什么的小伙伴,不要看到这里就立刻动手。参考后面的这一条 https://github.com/peng-zhihui/ElectronBot/issues/122#issuecomment-1089684661** ~~对于Windows上驱动装不上的同学,参考以下方法:~~ - ~~libusb-win32-bin-1.2.6.0驱动安装方法: https://blog.csdn.net/yuelengloulan/article/details/71665213~~ - ~~libusb-win32安装包: https://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip~~ 然后我的问题还是依旧,感觉不是软件方面的问题了。还是硬件哪里有问题了 下图是用稚晖君发布的固件 我自己改后打印信息的固件和之前发的图一样。

> ~那你们应该是USB3300 PHY电路有点问题,确认一下板子的焊接,我最开始遇到类似的情况经检查是晶振的1M电阻引起的。~ 不过既然设备管理器能枚举出来说明应该也没啥问题啊,而且看你们的图设备连接也是正常的,你们看看PID和VID是否正常(0x8023和0x1001) 看起来应该是这样,虽然不工作,没想到这样竟然也能识别 (。 ́︿ ̀。)。 PID和VID是正常的,我的能连上,但是不能发数据。

> 有调试环境的话,在固件的CDC_Receive_HS函数里打个断点,看能不能接收到主机发来的USB数据包 恐怕还没到主机发送数据的地步。我在mac上打断电给LowLevel的Sample,发现卡在ElectronLowLevel::SyncTask里的第一个ReceivePacket从机的32字节的位置,返回结果总是 -2。打印的是-2,实际打断点,是uint32的4294967294

> 那我还是怀疑是驱动安装的问题...设备管理器卸载了设备(勾选卸载驱动)然后按我仓库的说明重新安装一遍我提供的驱动?此外测试的时候最好是拔了USB线重新插一下再运行电脑上的软件,避免出现奇怪的问题 请问下,为什么 ElectronBot.inf 里的 DeviceId 是 VID_0483&PID_5740,[email protected] 里的是 VID_1001&PID_8023? 一个不同的小细节: 我用libusb-win32的驱动安装包,识别出来的DeviceId是 VID_1001&PID_8023&MI_00 和 VID_1001&PID_8023&MI_01。

> > 关于DLL的下载,可以在这个网站中下载https://www.dll-files.com/ > > 正常驱动信息是这样的,你看看是不是一样? ![image](https://user-images.githubusercontent.com/12994887/161785537-652967b1-c53b-45bc-be93-2711dbe7a6b1.png) 就这个后面的&MI_00和&MI_01的不同,导致BotDriver里的驱动就算装了也没反应,难道是芯片有区别? 就在没装驱动前,插上以后也是会出现两个设备,一个是COM口,一个显示ElectronBot@PZH (驱动没正常启动),硬件的ID就是我截图的这两个

我改了下代码,将DeviceClass和SubClass都改成02,SubClass也可以改为0x00 在DeviceClass=0x02的时候,至于SubClass,不管是0x00还是0x02,都可以被识别为串口,同时硬件ID也不带有&MI_0X的了,并且也不会出现2个设备。 接下来我设置DeviceClass=0x02,DeviceSubClass=0x00,然后烧录固件 首先禁用了驱动签名重启后,在INF上右键安装,按提示安装完成后,更新驱动 让我从计算机上的可用驱动列表中选取 选择刚才装好的驱动 安装完成 关闭后会自动刷新,最终显示成这样 然后从串口打印的数据来看,可以通讯了。F405也收到数据了,但是屏幕仍然没有图像 Good,是个很大的进步,再接再厉 PS:经过进一步的测试,只要DeviceClass=0x02,不管是DeviceSubClass是0x00,还是0x02,F405都可以收到数据。只要DeviceClass=0x00,那就会出现2个设备,且F405都不能收到数据。

> 我没有在描述符里配置虚拟串口啊,你这个是不是驱动冲突了?设备管理器里面选择显示隐藏设备,卸载所有libusb相关的设备顺便勾选卸载驱动,然后重新安装一下看看,另外板子固件代码确认没改过?用STM32CubeMX重新生成代码的话会覆盖USB相关配置的,最好用我提供的测试hex固件直接烧录 我用 6.Tests/TestDisplayUSB/_Released/STM32F4 Firmware/ElectronBot-fw.hex 这个文件,也烧录过测试,同时也把所有安装的驱动都删了。也确实会出现2个设备,硬件ID会多出 &MI_0X 的部分。 昨天睡觉前,我用STM32CubeMX重新生成了工程,然后用 FileMerge 工具一个文件一个文件,一行一行的比对(不过MX的固件迁移到最新了。但影响不大),最终发现是描述符的DeviceClass和SubClass不同。MX默认生成的都是0x02。然后会显示一个虚拟串口。如果我把这个也都改成0x00,那么MX新生成的代码烧录后,也会出现两个设备 顺带一提,出现两个设备的时候,即使把[email protected]里的DeviceId改成一样的,驱动也装上了,但是F405那边也仍然无法收到数据。

> ![29959b8086909d9c33932a1bd1324d3] 老哥用你的方法修改0x02装上驱动!运行sample.exe我这里成功显示了(改的6文件夹的程序的0x02)感谢大哥 可恶啊,我还没成功啊 (╯‵□′)╯︵┻━┻ 还是恭喜了

我用了6.Test的固件,也终于出来了,不容易啊 Y(^_^)Y ![image](https://user-images.githubusercontent.com/4011564/161893754-e042ba8c-c3ef-4a17-a24b-4306876db367.png)