shipeng

个性签名:模电临时工

  • 2019-05-16
  • 回复了主题帖: U盘IAP跳转APP异常

    欧耶问题解决了!办法就是在跳转APP前把USB的外设时钟关闭:RCC_AHB2PeriphClockCmd( RCC_AHB2Periph_OTG_FS, DISABLE) ;就不会有跳转异常的问题发生了。我怀疑原因可能是USB中断在BOOTLOADER中打开之后,跳至APP时并没有使用USB功能因此没有设置USB中断入口从而导致中断溢出,保险起见以后在跳转APP前应将所有使能的外设全部关闭。

  • 2019-05-15
  • 回复了主题帖: U盘IAP跳转APP异常

    另外说明下,APP中未用到USB功能并且我在跳转前也关闭了中断的,不知为何还是会发生异常。

  • 发表了主题帖: U盘IAP跳转APP异常

    本帖最后由 shipeng 于 2019-5-15 18:48 编辑 最近使用STM32F429的USB_OTG_FS做了一个BOOTLOADER可通过USB(PA11,PA12)读取U盘中的文件或者UART二选一更新APP。UART升级一切正常,唯有USB升级有个小问题:升级过程都一切顺利,但是到了要跳转到APP时芯片先是背光驱动IO无输出或输出低电平(其它IO状态未知,怀疑和背光驱动IO相似)等了几秒后芯片复位,复位后也能正常进入APP。但就是复位之前那段时间要等好几秒不明白是什么原因。如果是HardFault异常中断,我的看门狗没有使能,芯片没理由复位啊?这个问题无法仿真,因为一旦芯片复位仿真器就与芯片失去同步了。我通过将代码一段一段注释排除发现:如将"USBH_Process(&USB_OTG_Core, &USB_Host);"函数及所在的循环注释就不会发生复位问题跳转APP正常,求高人解惑。 http://bbs.21ic.com/static/image/hrline/4.gif U盘升级函数: /* ********************************************************************************************************* *        Function Name : Programing_From_Flie *        Function Detail : Programing The Chip From a Flie *        Paramater : None *        Return Value : None ********************************************************************************************************* */ void Programing_From_Flie(void) {         static uint8_t page_buffer[4096];         #if defined BK180H         const char object_path[]="0:BK180H.bin";         #elif defined BK300H         const char object_path[]="0:BK300H.bin";         #elif defined U180         const char object_path[]="0:U180.bin";         #endif         PrintMessage("Udisk Connected!");         SysTick_Init();         do         {                 USBH_Process(&USB_OTG_Core, &USB_Host);         }         while (count_msCTRL=0x00; //Stop Counter         char string_buf[24]="Scanning for ";         for (u8 i=13;i0x1F8000)                 {                         PrintMessage("File Size Error!");                         goto close_file_exit;                 }                 if (FLASH_If_GetWriteProtectionStatus() == 0)                    {                         /* Disable the write protection */       if (FLASH_If_DisableWriteProtection()==1)       {         PrintMessage("Write Protection disabled!");       }                         else                         {                                 PrintMessage("Error: Flash write unprotection failed!");                                 goto close_file_exit;                         }                 }                                 PrintMessage("Chip Erassing");                 FLASH_If_Erase(APPLICATION_ADDRESS,file.fsize);                 PrintMessage("Chip Programming");                                 uint32_t flashdestination = APPLICATION_ADDRESS;                 uint32_t packets_max = file.fsize/4096+(file.fsize%4096==0?0:1);                 for (uint32_t packets_readed=0;packets_readed

  • 2019-05-14
  • 发表了主题帖: STM32F429 USB_OTG_FS(PA11,PA12)读取U盘问题

    本帖最后由 shipeng 于 2019-5-14 11:43 编辑 最近在写一个STM32F429读U盘的IAP,调了快一周了,愣是卡在f_mount函数里面,实在没招了特来请教大家。debug发现:运行到函数disk_read中有个循环程序就卡在此循环中 do                                         {                                                 status = USBH_MSC_Read10(&USB_OTG_Core, (uint8_t *)buff,sector,SECTOR_SIZE * count);             USBH_MSC_HandleBOTXfer(&USB_OTG_Core ,&USB_Host);                                                 if (!HCD_IsDeviceConnected(&USB_OTG_Core))                                                 {                                                         break;                                                 }                                         }                                         while (status == USBH_MSC_BUSY ); status == USBH_MSC_BUSY条件始终成立。debug进入“USBH_MSC_Read10”函数中,发现由于变量“USBH_MSC_BOTXferParam.CmdStateMachine”始终为0因此导致返回值为USBH_MSC_BUSY。 通过查找发现在文件“usbh_msc_bot.c”中的函数“USBH_MSC_Init”中会将变量“USBH_MSC_BOTXferParam.CmdStateMachine”赋值非0值,在此函数“USBH_MSC_Init”中设置断点发现运行时不会进入此函数 ,进一步查找发现此函数只在文件“usbh_msc_core.c”中的函数“USBH_MSC_Handle”被调用,断点发现“USBH_MSC_Handle”函数不会被执行,不知道是何原因。由于USBH_MSC_Handle均以指针的方式被调用,所以无从查找相关被调用的代码。

  • 2019-04-18
  • 回复了主题帖: 简单高效的零点采集电路

    huo_hu 发表于 2019-4-18 15:48 你这个硬件上是简单,但是软件处理上比较复杂. 如果过零点的电压不要求,交流信号接个限流电阻,直接输入到 ...
    理论上此电路过零电压精度仅次于运放采零点电路,关于抖动问题我认为此电路还是有可取之处的,因为此电路保留了IO口自带的2V滞回特性,有一定的滤抖效果。

  • 2019-04-17
  • 回复了主题帖: 简单高效的零点采集电路

    sunscreen 发表于 2019-4-17 16:43 是一种不错的思路。成本也低。
    我分享的目的也不限于一定要用于零点采集,希望这种做法对大家有点启发意义,对解决相关的电路问题提供一个新思路。

  • 回复了主题帖: 简单高效的零点采集电路

    huo_hu 发表于 2019-4-16 15:22 0.7Vcc和0.3Vcc的设置本身就是一种迟滞作用,假设你两个口状态不一致又如何处理呢
    0.7Vcc偏置的那个口只检测上升沿,0.3Vcc偏置的那个口只检测下降沿。在零点附近两个口状态是不一样的,上升沿时0.7Vcc口先检测到上升沿,0.3Vcc口后检测到上升沿(此口忽略上升沿);下降沿时0.3Vcc口先检测到下降沿,0.7Vcc口后检测下降沿(此口忽略下降沿)。

  • 2019-04-15
  • 回复了主题帖: 简单高效的零点采集电路

    topwon 发表于 2019-4-15 17:43 你的交流电信号幅度是固定的吗?
    幅值基本稳定

  • 回复了主题帖: 简单高效的零点采集电路

    topwon 发表于 2019-4-15 15:32 这跳变的时刻应该还不是真正的过零“点”了吧,输出的是一个区间了,这看你具体应用对过零时间的准确度要求 ...
    不对吧,何来输出是一个区间之说?IO_H只取上升沿触发中断,IO_L只取下降沿触发中断,而这两个触发点都是交流在0V时处于临界状态。

  • 发表了主题帖: 简单高效的零点采集电路

    从业多年一直都有用到零点采集功能,一直的做法都是低要求的直接将交流信号限流引入IO;要求高点的就用三极管;要求再高的用运发做0V比较。最近想到了一个电路,突然发现零点采集要求再高原来都可以如此简单。办法就是根据IO的输入施密特特性,用两个IO分别偏置到施密特的上下两个门限电压(STM8S单片机是0.7Vcc和0.3Vcc),再将输入交流信号叠加即可在0V附近触发IO电平跳变。具体电路见下图: IO_H接上升沿采集IO,IO_L接下降沿采集IO,采用外部中断方式触发采集。

  • 2019-04-08
  • 发表了主题帖: 不可一世的数学遇到高手之后也会放低她高傲的身段

    傅里叶分析之掐死教程(完整版)更新于2014.06.06 - Heinrich的文章 - 知乎https://zhuanlan.zhihu.com/p/19763358

  • 2019-01-24
  • 回复了主题帖: KEIL工程编译时的一个奇怪问题

    有没有clean了后再编译试试

  • 2018-12-24
  • 回复了主题帖: 自动交流稳压器的设计

    本帖最后由 shipeng 于 2018-12-24 08:40 编辑 楼主这个问题问的实在没诚意,你就不能把电路描出来再发吗,就算你不会画图,拍照你就不能顺带把图片旋转一下吗?拍个照还这么模糊你让我这种强迫症情何以堪:call:

  • 2018-12-14
  • 回复了主题帖: 关于for循环中的continue

    我上面用到的goto只是为了说明for循环的内部运行机制,据说goto会破坏程序的可读性。在此我要给goto平反昭雪goto还是有它的优点的:首先一点就是生成机器码的效率非常高,一句goto一般就对应一条机器指令。另外关于“破坏程序可读性”这个锅goto表示也不背,因为破坏可读性只是使用者本身的用法问题,你如果使用goto跳到几百行以外,别人在读你源代码的时候要来来回回折腾看了前面忘了后面,肯定就破坏了可读性。但其实调几百行的情况不多见因为goto只在当前函数中才有效,不可跳出函数。一般我写的函数多数不超过100行。因此对于近几行的跳转goto非但不会破坏可读性反而让程序更加简洁便于阅读理解。另外还有一点goto语句的数量要控制好尽量少的使用,用多了当然也会让人感觉很乱。

  • 2018-12-13
  • 发表了主题帖: 关于for循环中的continue

    最近遇到for中的continue问题,对for循环中continue是否会跳过第二个分号后的语句不太了解,经过验证发现是不会跳过该语句的。在此对for循环的内部执行流程做个总结: for(unsigned int i=0;i

  • 2018-12-08
  • 回复了主题帖: 等离子扬声器的那些事

    Jason.F 发表于 2018-12-7 12:29 主要是特斯拉不安全,理论上能够不失真还原原声,但是我之前做了个PLL的。音质不太好,吧里大神说频率高点 ...
    你用的是PWM方式吧?我始终认为这种方式根本谈不上高保真,要实现高保真直流高压线性调流才是正途。

  • 2018-12-03
  • 回复了主题帖: 你们见过心这么大的公司吗?

    话说楼主是不是在面试的时候牛皮吹过了:Laugh:,开个玩笑

  • 2018-11-23
  • 回复了主题帖: 你们一般都去哪里找ic的pdf资料?

    shipeng 发表于 2018-11-23 08:04 www.datasheet5.com
    不过现在都喜欢闭着眼睛瞎搞懒得看datasheet了:titter:

  • 回复了主题帖: 你们一般都去哪里找ic的pdf资料?

    www.datasheet5.com

  • 2018-11-20
  • 回复了主题帖: 这个奇怪的电路

    topwon 发表于 2018-11-20 11:02 可能是发现了你忘在机壳内的私房钱。。。。。怕你追讨或灭口,反正换件马甲也不费事,哈哈
    分析的有理:loveliness:,我很好奇这位网友到底是有怎样的才华才能有幸得到老师的馈赠{:1_114:}

最近访客

< 1/2 >

统计信息

已有35人来访过

  • 芯币:1016
  • 好友:--
  • 主题:30
  • 回复:192
  • 课时:--
  • 资源:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言