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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版