ULM300BOX测试夹具问题

导语:ULM300BOX接收端与ULM300USB接收端两款产品无论是软件还是硬件都是基本类似的,ULM300BOX是在ULM300USB基础上升级的,所以整体思想是在做测试夹具时尽量能照搬ULM300USB的测试环境(整个测试软硬件平台)

一、测试夹具中主要用到的测试点#

  • 测试点主要有9个,JTAG烧写程序的五个点(VCC、GND、RST、SWDAT、SWCLK)、I2C传输数据的两个点(SDA、SCL)、供电点(VBUS、GND)。
  • 上位机测试时使用JTAG的点控制待测试板一步一步进行(类似于MDK中使用JTAG线单步调试),供应商在调试时说过有用到I2C线来传输数据和程序(因为IA2E芯片无RAM无法存储程序)但在我们的产品中IA2E的程序存储于MCU(GD32F150)芯片中,这两个点是否有实际作用还有待观察。
  • ULM300USB通过USB接头供电(VBUS、GND两根线),ULM300USB需要测试音频,通过AOUT、GND两个根线来传输音频数据到电脑,这样接ULM300USB的USB接头就需要4根线(VBUS、GND、AOUT、GND0),但是ULM300BOX只需要VBUS、GND两根线来供电即可

二、ULM300USB测试程序与ULM300BOX硬件匹配问题#

  • ULM300USB和ULM300BOX硬件的差异如下。


    ULM300USB.PNG

    ULM300BOX.PNG
  • 以上两者之间原理图的不同原因在于:ULM300USB使用(PA10、PA11、PA12)这几个脚去实现USB的功能,ULM300BOX使用(PA9、PA10、PA11、PA12)这几个脚去控制74HC595点亮LED的功能。
  • 产生的问题:若直接在ULM300BOX板中使用ULM300USB的测试程序,实际程序认为的控制原理图就如图ULM300USB.PNG所示,那很可能74HC595与MCU相互连接的线路上有高低电平使得D+、D-之间的差模电压引起USB中断,这样程序会一直进入USB中断,这样测试将无法完成。
  • 解决的方法,如ULM300BOX.PNG红色部分所示,在D+处连接电脑74HC595一端加一个测试点TP,在夹具中连接这TP点的顶针接地,这样就破坏了USB数据的中断,74HC595所在面板返回的电平将无法产生USB中断了,测试程序就能正常的运行

三、测试程序的改动#

  • 原则上可以通过修改ULM300USB的测试程序来解决以上USB中断的问题
int main( void ) 
{
    
    RCC->AHBENR |= RCC_AHBENR_GPIOFEN | RCC_AHBENR_GPIOCEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOAEN;
    
    Button_Init();          // pull-up on button input
    
    UID = Get_UID();
    
    USB_Interrupts_Config();
    
    LED_Init();
    LED_SetMode( LED_OFF );
    
    I2C_Init();
    
    IA2E_PowerUp();
    
    SetSysClock();
    
    while( !IA2E_Boot_Complete );
    
    // only required here for I2S operation; USB runs this upon Alt.Set.1
    Stream_Init();
    Stream_Start( I2S );
    
    USB_Init();
    
    while( 1 ) {
        
//      if( GPIOA->IDR & ( 1 << PIN_SW ) ) {
        if( Button_Event == ( BTN_PAIRING | LONG_PRESS ) ) {
            Button_Event = 0;
//          LED_SetMode( LED_OFF );
            SYNIC_Pairing( ENABLE );
//          #ifdef _HMS1_
//              TIM14->CCER |= TIM_CCER_CC1E;
//          #else
//              TIM15->BDTR |= TIM_BDTR_MOE;
//          #endif
//          Stream_Attn = 0;
//      } else {
/*      } else if( Button_Event == ( BTN_PAIRING | SHORT_RELEASE ) ) {
            Button_Event = 0;
//          LED_SetMode( LED_ACTIVE );
            SYNIC_Pairing( DISABLE );
//          #ifdef _HMS1_
//              TIM14->CCER &= ~TIM_CCER_CC1E;
//          #else
//              TIM15->BDTR &= ~TIM_BDTR_MOE;
//          #endif
//          Stream_Attn = ( 60 / 6 ) << 6;
            
//          SYNIC_Pairing( ENABLE );
//          while( !( GPIOA->IDR & ( 1 << PIN_SW ) ) );
//          SYNIC_Pairing( DISABLE );
*/      }
        
    }
    
}

  • 如上程序源代码,把USB_Interrupts_Config();USB_Init();两行代码屏蔽掉即可,目前的问题是此项目经过多人接手,测试代码的源程序没找到。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 4,006评论 1 20
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,462评论 0 13
  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 2,260评论 0 5
  • 姓名:吴兆阳 学号:14020199009 转自韦东山 嵌牛导读:对嵌入式初学者,没有足够的视野选择一个合适投入方...
    吴兆阳阅读 2,520评论 0 4
  • 【三十二】 雅各布给老头儿带了一盒子白俄蛋糕。老头儿就喜欢这东西。他把盒子打开,塞进去一个小纸条,然后敲了老头儿的...
    辣么大之阅读 180评论 0 0

友情链接更多精彩内容