查看: 5708|回复: 14

[求助] 基于arm的USB通信

[复制链接]

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
25
最后登录
1970-1-1
发表于 2014-5-8 11:08:38 | 显示全部楼层 |阅读模式
 k60的芯片开发USB接口通信,我用的是王宜怀编著的《嵌入式原理与实践》网上光盘上的例程,下载到板子后连接到电脑,电脑上显示“无法识别的USB设备”,在调试过程中发现,USB模块初始化hw_usb_init函数中,有一条语句是USB_USBTRC0 |=0x40,意思是强制设置第六位为1,查看资料,也说该位必须软件设置为1,但Debug时该寄存器的值没有变化,这是为神马呢?????会影响最后的结果吗???
求各路大神帮忙啦,谢谢啦!
我知道答案 目前已有13人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-8 11:32:44 | 显示全部楼层

    回复:基于arm的USB通信

    不清楚你K60芯片具体型号,在K60P144M100SF2RM参考手册USBx_USBTRC0寄存器处看到这个bit6是不可读的。
    USBTRC0.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-8 13:58:05 | 显示全部楼层

    回复:基于arm的USB通信

    回复第 2 楼 于2014-05-08 11:32:44发表:
    不清楚你K60芯片具体型号,在K60P144M100SF2RM参考手册USBx_USBTRC0寄存器处看到这个bit6是不可读的。

     
    我用的是K60FN1M0VLQ12,这里写的第六位必须软件设置为1啊,那还有可能是什么原因导致这种结果啊
    QQ截图20140508135623.png
     
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-8 14:08:19 | 显示全部楼层

    回复:基于arm的USB通信

    不清楚你的中文参考手册哪来的,建议你还是根据芯片型号在飞思卡尔官网选择对应的参考手册K60P144M150SF3RM
    从这个手册里看,USBx_USBTRC0的bit6是只读的,而且读出值总为0.
    USBx_USBTRC0 K60 120MHz.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-8 14:29:32 | 显示全部楼层

    回复:基于arm的USB通信

    回复第 4 楼 于2014-05-08 14:08:19发表:
    恩,那个英文资料看到了,可能中文资料翻译还是有问题吧,那例程里面那个语句是无意义的啊,你有标准的USB初始化函数吗?我用的初始化函数是这样的,有问题不
    void hw_usb_init(void)
    {
        tBDTtable = (tBDT *)((( uint32 ) tBDT_unaligned & 0xFFFFFE00UL) + 0x200UL);
        Setup_Pkt=(tUSB_Setup*)BufferPointer[bEP0OUT_ODD];
        gu8USB_State=uPOWER;
     
        USB_FMC_ACC_ENABLE;
        USB_REG_SET_ENABLE;
        USB_REG_CLEAR_STDBY;
        MPU_CESR=0;//禁止MPU
        FLAG_SET(SIM_SOPT2_USBSRC_SHIFT,SIM_SOPT2);     // 使能PLL/FLL为时钟源
        FLAG_SET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);  // 使能PLL输出
        
        SIM_CLKDIV2|=USB_FARCTIONAL_VALUE;              //USB分频因子设置
        SIM_SCGC4|=(SIM_SCGC4_USBFS_MASK);             //USB模块时钟门使能
        enable_irq(USB_INTERRUPT_IRQ);                  //使能USB模块IRQ中断
     
        //USB模块寄存器配置
        USB0_USBTRC0|=USB_USBTRC0_USBRESET_MASK;        //复位USB模块  //USB收发控制器0最高位置1
        while(FLAG_CHK(USB_USBTRC0_USBRESET_SHIFT,USB0_USBTRC0)){};//等待USB模块复位完成
        //设置BDT基址寄存器
        //( 低9 位是默认512 字节的偏移) 512 = 16 * 4 * 8 。
        //8 位表示: 4 个字节的控制状态,4 个字节的缓冲区地址 。
        USB0_BDTPAGE1=(uint8)((uint32)tBDTtable>>8);
        USB0_BDTPAGE2=(uint8)((uint32)tBDTtable>>16);
        USB0_BDTPAGE3=(uint8)((uint32)tBDTtable>>24);
        //清除USB模块复位标志
        FLAG_SET(USB_ISTAT_USBRST_MASK,USB0_ISTAT);//USB0_ISTAT中断状态寄存器
       //使能USB模块复位中断
        FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0_INTEN);//USB0_INTEN中断使能寄存器
     
        USB0_USBCTRL=0x40;                            //D-  D+ 下拉 
        USB0_USBTRC0|=0x40;                            //强制设置第6位为1
        USB0_CTL|=0x01;                                //控制寄存器   USB模块使能
        
        //上拉使能
        FLAG_SET(USB_CONTROL_DPPULLUPNONOTG_SHIFT,USB0_CONTROL);
    }
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-8 14:45:34 | 显示全部楼层

    回复:基于arm的USB通信

    Q: 你有标准的USB初始化函数吗?
    A: 请参考飞思卡尔官网提供的Kinetis 120MHz bare metal sample code [url=https://www.freescale.co
    m/webapp/Download?colCode=KINETIS_120MHZ_SC&appType=license&location=null&fasp=1&WT_TYPE=Snippets,%20Boot%20Code,%20Headers,%20Monitors,%20etc.&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&amparent_nodeId=1322580939986714855381&amparent_pageType=product]KINETIS_120MHZ_SC[/url] 中USB相关工程。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-8 14:47:16 | 显示全部楼层

    回复:基于arm的USB通信

    回复第 6 楼 于2014-05-08 14:45:34发表:
    Q: 你有标准的USB初始化函数吗?
    A: 请参考飞思卡尔官网提供的Kinetis 120MHz bare metal sample code [url=https://www.freescale.co
    m/webapp/Download?colCode=KINETIS_120MHZ_SC&appType=license&location=null&fasp=1&WT_TYPE=Snippets,%20Boot%20Code,%20Headers,%20Monitors,%20etc.&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&amparent_nodeId=1322580939986714855381&amparent_pageType=product]KINETIS_120MHZ_SC[/url] 中USB相关工程。
     

    补充一下
    飞思卡尔官网还提供[url=https://www.freescale.co
    m/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MEDICALUSB]USB协议栈[/url]  ,你可以下载最新版本的[url=https://www.freescale.co
    m/webapp/Download?colCode=USB_STACK_V4.1.1&location=null&fasp=1&WT_TYPE=Protocol%20Stacks&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=exe&WT_ASSET=Downloads&amparent_nodeId=1251240750393714284007&amparent_pageType=product]USB_STACK_V4.1.1[/url]
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-8 15:28:11 | 显示全部楼层

    回复:基于arm的USB通信

    好的,谢谢! 
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-9 16:42:44 | 显示全部楼层

    回复:基于arm的USB通信

    用飞思卡尔官网提供的[url=https://www.freescale.co
    m/webapp/Download?colCode=KINETIS_120MHZ_SC&appType=license&location=null&fasp=1&WT_TYPE=Snippets,%20Boot%20Code,%20Headers,%20Monitors,%20etc.&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&amparent_nodeId=1322580939986714855381&amparent_pageType=product]KINETIS_120MHZ_SC[/url] 中USB相关工程,编译下载到控制板后,为什么还是显示“无法识别的USB设备”啊
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-12 11:05:23 | 显示全部楼层

    回复:基于arm的USB通信

    回复第 9 楼 于2014-05-09 16:42:44发表:
    用飞思卡尔官网提供的[url=https://www.freescale.co
    m/webapp/Download?colCode=KINETIS_120MHZ_SC&appType=license&location=null&fasp=1&WT_TYPE=Snippets,%20Boot%20Code,%20Headers,%20Monitors,%20etc.&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&amparent_nodeId=1322580939986714855381&amparent_pageType=product]KINETIS_120MHZ_SC[/url] 中USB相关工程,编译下载到控制板后,为什么还是显示“无法识别的USB设备”啊

     

    请问你是否有将工程配置修改成适合K60 120MHz的呢?
    要选芯片Freescale MK60FN1M0xxx12
    要把K70的预定义改成TWR_K60F120M
    .board文件也修改成FlashK60Fxxx128K.board
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 20:18 , Processed in 0.109065 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表