金牌会员
 
- 积分
- 2682
- 金钱
- 2682
- 注册时间
- 2019-4-24
- 在线时间
- 184 小时
|
30金钱
你好 , 請問 我有1塊F407(usb device) 1塊f429(host) , 我想透過usb 互傳資料 , 速度不要求可以慢 , 因為老師要我做這實驗不透過UART
一開始我將F407(USB DEVICE)可以傳給電腦 , 一直傳0x03的數值給電腦 , 電腦也正確收到 , 我是利用原子哥分享的軟體一打開 就自動一直收到資料 , 也顯示出我要的數值 , 所以我認為F407(DEVICE)這端應該是正確的!!

接下來我利用CubeMX 設定為 USB_OTG_FS(如附件圖)

設定好後 , 我利用USBH_CDC_Receive這個函式做接收的動作 , 當然因為我是初學者 , 我在網路上找其他前輩的範例來參考修改 , 我將2塊板子DP DM直接對接起來 , 然後GND共地
但是怪了我的F429(HOST)怎麼都接收不到F407(DEVICE)過來的資料!!!>"<
頭大了~~~我的想法很簡單 , 就是F407 傳送過來0X03的數值 , F429(HOST)接收到 , 就點亮LED燈 , 我就可以對老師教差了!!!只是 HOST端老是收不到DEVICE傳過來的訊號
我寫的F429程式 如下 , 請教原子哥 難道 我不行 直接板子對接 , 透過USB_OTG_FS做低速傳送USB的實驗嗎? 我找論壇裡 好多文章 , 看了許久都沒有DEMO CODE >_<~~~
誰可以告訴我解決方法呢!!
/////////////////////////////////////////////////////////////////////// main.c
#include "main.h"
#include "stm32f4xx_hal.h"
#include "usb_host.h"
#include "gpio.h"
/* USER CODE BEGIN Includes */
#include "usbh_cdc.h"
#include "usb_host.h"
#include "usbh_core.h"
#include "usbh_cdc.h"
extern USBH_HandleTypeDef hUsbHostFS;
uint8_t UserTxBuffer04[100];
void SystemClock_Config(void);
void MX_USB_HOST_Process(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USB_HOST_Init();
while (1)
{
MX_USB_HOST_Process();
HAL_Delay(100);
HAL_GPIO_TogglePin(LD1_GPIO_Port,LD1_Pin);
USBH_CDC_Receive(&hUsbHostFS,UserTxBuffer04,64);
if((UserTxBuffer04[1]==3))
{
LED_L;
HAL_Delay(100);
LED_H;
}
}
}
/////////////////////////////////////////////////////////////////////////////////usb_host.c
#include "usb_host.h"
#include "usbh_core.h"
#include "usbh_cdc.h"
USBH_HandleTypeDef hUsbHostFS;
ApplicationTypeDef Appli_state = APPLICATION_IDLE;
static void USBH_UserProcess (USBH_HandleTypeDef *phost, uint8_t id);
void MX_USB_HOST_Init(void)
{
USBH_Init(&hUsbHostFS, USBH_UserProcess, HOST_FS);
USBH_RegisterClass(&hUsbHostFS, USBH_CDC_CLASS);
USBH_Start(&hUsbHostFS);
}
void MX_USB_HOST_Process(void)
{
USBH_Process(&hUsbHostFS);
}
static void USBH_UserProcess (USBH_HandleTypeDef *phost, uint8_t id)
{
switch(id)
{
case HOST_USER_SELECT_CONFIGURATION:
break;
case HOST_USER_DISCONNECTION:
Appli_state = APPLICATION_DISCONNECT;
break;
case HOST_USER_CLASS_ACTIVE:
Appli_state = APPLICATION_READY;
break;
case HOST_USER_CONNECTION:
Appli_state = APPLICATION_START;
break;
default:
break;
}
}
|
-
DEVICE
|