你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F105 USB

[复制链接]
joeen63 提问时间:2012-10-3 11:46 /
我使用 IAR 6.3 提供的範例程序(Custom_HID) , 將頻率改成16MHz,
載入我自己的板子,無法啟用HID , 是硬件問題嗎?
USBDP => PA12 , USBDM => PA11 , USBGND => GND , USB5V => NC
還有其他要接的嗎?
收藏 评论8 发布时间:2012-10-3 11:46

举报

8个回答
joeen63 回答时间:2012-10-3 17:57:45

RE:STM32F105 USB

原來是要把 USB5V 接到 PA9.
joeen63 回答时间:2012-10-4 16:33:23

回复:STM32F105 USB

目前可以收發usb了, 但usb 只能收2byte , 我從PC送出64byte 資料 , 結果STM 只能一次收2byte , 還有什麼地方要修改?
const uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] =
  {   
    0x05, 0x8c, /* USAGE_PAGE (ST Page) */
    0x09, 0x01, /* USAGE (Demo Kit) */
    0xa1, 0x01, /* COLLECTION (Application) */
    // The Input report
    0x09,0x03, // USAGE ID - Vendor defined
    0x15,0x00, // LOGICAL_MINIMUM (0)
    0x26,0x00, 0xFF, // LOGICAL_MAXIMUM (255)
    0x75,0x08, // REPORT_SIZE (8bit)
    0x95,0x40, // REPORT_COUNT (64Byte)
    0x81,0x02, // INPUT (Data,Var,Abs)
    // The Output report
    0x09,0x04, // USAGE ID - Vendor defined
    0x15,0x00, // LOGICAL_MINIMUM (0)
    0x26,0x00,0xFF, // LOGICAL_MAXIMUM (255)
    0x75,0x08, // REPORT_SIZE (8bit)
    0x95,0x40, // REPORT_COUNT (64Byte)
    0x91,0x02, // OUTPUT (Data,Var,Abs)
    0xc0 /* END_COLLECTION */
}; /* CustomHID_ReportDescriptor */
 
usb_prop.c
void CustomHID_Reset(void)
{
  /* Set Joystick_DEVICE as not configured */
  pInformation->Current_Configuration = 0;
  pInformation->Current_Interface = 0;/*the default Interface*/
 
  /* Current Feature initialization */
  pInformation->Current_Feature = CustomHID_ConfigDescriptor[7];
 
#ifdef STM32F10X_CL  
  /* EP0 is already configured in DFU_Init() by USB_SIL_Init() function */
 
  /* Init EP1 IN as Interrupt endpoint */
  OTG_DEV_EP_Init(EP1_IN, OTG_DEV_EP_TYPE_INT, 64);
 
  /* Init EP1 OUT as Interrupt endpoint */
  OTG_DEV_EP_Init(EP1_OUT, OTG_DEV_EP_TYPE_INT, 64);
#else
  SetBTABLE(BTABLE_ADDRESS);
  /* Initialize Endpoint 0 */
  SetEPType(ENDP0, EP_CONTROL);
  SetEPTxStatus(ENDP0, EP_TX_STALL);
  SetEPRxAddr(ENDP0, ENDP0_RXADDR);
  SetEPTxAddr(ENDP0, ENDP0_TXADDR);
  Clear_Status_Out(ENDP0);
  SetEPRxCount(ENDP0, Device_Property.MaxPacketSize);
  SetEPRxValid(ENDP0);
  /* Initialize Endpoint 1 */
  SetEPType(ENDP1, EP_INTERRUPT);
  SetEPTxAddr(ENDP1, ENDP1_TXADDR);
  SetEPRxAddr(ENDP1, ENDP1_RXADDR);
  SetEPTxCount(ENDP1, 64);
  SetEPRxCount(ENDP1, 64);
  SetEPRxStatus(ENDP1, EP_RX_VALID);
  SetEPTxStatus(ENDP1, EP_TX_NAK);
  /* Set this device to response on default address */
  SetDeviceAddress(0);
#endif /* STM32F10X_CL */
  bDeviceState = ATTACHED;
}
 
usb_endp.c

void EP1_OUT_Callback(void)
{
     DataLen = USB_SIL_Read(EP1_OUT, USB_Buffer);     //
allmybeyond 回答时间:2012-11-30 17:05:32

回复:STM32F105 USB

我也遇到过这样的问题,其实是参数设置的问题,将OTG_DEV_EP_Init(EP1_IN, OTG_DEV_EP_TYPE_INT, 2);中的2改成64就OK了,这个函数在#include "otgd_fs_dev.h"中。
我改了问题就解决的。现在我在纠结一个问题是,我的USB设备FEATURE报告描述符什么时候发怎么发到主设备上去呀,望哪位指点一下。
ges 回答时间:2015-3-9 09:46:08
亲,我改了OTG_DEV_EP_Init(EP1_IN, OTG_DEV_EP_TYPE_INT, 2);这个也是不行,什么问题?
zhangdaijin 回答时间:2015-3-9 12:54:00
顶一个
MouseCat 回答时间:2015-3-9 13:38:58
怎么变成乱码了?
ges 回答时间:2015-3-10 14:39:32
还需要改最后还需要在usb_desc.c中修改CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC]中的0x95, 0x01,            /*     REPORT_COUNT (1)           */把0x01修改为要发送数据大小的长度。
完成usb数据长度的修改。
小伟哥-353357 回答时间:2015-3-17 17:40:39
没有遇见过 帮顶

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版