打印

stm32出现的问题 且 没有解决的

[复制链接]
4286|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dkill|  楼主 | 2008-8-4 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随着大家使用stm32的项目都已进入了实质性的阶段,随之而来的问题也多了起来 在此 我希望大家把遇到的问题在这里说出来,这样的话st 香主就可以集中解决
 这里我先说几个:
   1 can在lookback模式下,使用fifo1中断接受,不能进入中断。fifo0完好。
   2 i2c操作不稳定(尤其高速时)问题出来已久,仍没有好的解决方法
   3 rtc时钟晶振问题

希望香主 st本部的就是支持  给出解决方法
沙发
香水城| | 2008-8-4 11:07 | 只看该作者

我早就想帮助解决,但没有人配合

做个比喻,有一部汽车在半路抛锚,车主打电话求助只说车子不动了,要求帮助解决,服务中心希望得到一些基本的信息,如油量、车胎气压、水温等,需要了解车子在什么状况下出问题了,但始终得不到有用的资料,车主只说我在你们那里买的车,我开其它牌子的车都是好好的,言外之意是不要怀疑我的驾驶技术,都是你们的问题。

回到楼主说的问题,比如说I2C,我问了多次希望看到示波器的波形,知道什么地方出的问题,但始终看不到波形;I2C高速的问题多数都是上拉电阻匹配不好,但没有人真正的重视过这个环节。

使用特权

评论回复
板凳
香水城| | 2008-8-4 11:17 | 只看该作者

出了问题一味地埋怨,不能静下心来想办法解决

很多人还总是一出现问题就说发现了芯片的Bug,埋怨手册写的不好、库函数很烂,总之问题都是出在别人身上。

我知道ST的手册不是最好的,STM32的库函数也不是很好,我们也及时地反馈给些文档和写库函数的同事,毕竟改变一个已成体系的东西,需要很长一段的过程,不可能一两天能够解决,我们还是需要在现有条件的基础上,大家互相配合尽量解决问题。

使用特权

评论回复
地板
ijk| | 2008-8-4 13:48 | 只看该作者

不会提问

  不会提出问题的人,怪回答问题的人没有把问题回答好

使用特权

评论回复
5
dkill|  楼主 | 2008-8-4 14:24 | 只看该作者

香主在说我吗

我是想把问题集中起来 有利于解决  这样我们的客户可以放心去用 
   怎么引出这么多的话  
 回4楼  你的意思是我在提问   
  呵呵  这只是一方面 我只是想替 st 把问题集中一下  大家讨论  这样st也知道从哪下手  
   没一个发贴跟自己遇到的问题  怎么引出这么多废话   看来大家没什么问题
针对stm32的使用


所以我奉劝大家 以后遇到问题别说stm32有问题。
 

使用特权

评论回复
6
香水城| | 2008-8-4 14:38 | 只看该作者

我并没有在说楼主

首先声明我绝无针对任何人的意思,我是就事论事。我知道楼主的用意是希望把问题集中一下,我当然也知道这些问题并不都是你首先提出的,我只是想解释为什么这么长时间这些问题还存在(或部分存在),你可以回顾一下我以前就这些问题的提问,看看我的提问得到了回答吗?

我们是做技术的,要实事求是,以事实为依据,实事求是的首要工作就是要收集证据,如果连证据都没有,我如何做进一步的分析?我不是说STM32没有问题没有Bug,要找出问题找出Bug所在就需要证据,没有证据就无法诊断、无法下结论。


如果一个医生在没有见到病人的情况下,又没有足够的信息,他是不敢随便给病人开药的;解决技术问题何尝不是这样?

使用特权

评论回复
7
everbright| | 2008-8-4 21:46 | 只看该作者

我现在关注,rtc时钟晶振问题。

因为我自己遇到过这类问题,我也听好多同行说遇到过这类问题
1.不起振。可能是对电容、晶振要求比较严。我选取了多组配合都不行
2.内部晶振不好用。如果使用内部晶振,外部断电竟然不走,有Vbat供电也不行。断电不计时这一点就决定了使用内部rtc没多大用。因为好多实际场合都不能连续供电的。

使用特权

评论回复
8
香水城| | 2008-8-4 22:23 | 只看该作者

RTC时钟晶振问题

关于不起振问题,请试试使用外部时钟而不是晶体,看看是否可以正常操作,这样暂时回避对晶振要求比较严的问题。

内部阻容振荡器肯定不能作为主电源断电后维持RTC的时钟,因为它不在VBAT供电区。

我这里有一个使用RTC做的万年历的例子,供参考:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子

使用特权

评论回复
9
pb486| | 2008-8-5 09:00 | 只看该作者

我也碰到过时钟晶振的问题

做了二块板子,第一块板子的时钟晶振刚开始正常,运行了二个星期后,时钟没有走,发现是晶振环了,换了一个新的晶振就好了,第二板做好后,时钟晶振不能正常工作,程序在while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)这里循环,可能是晶振电容有问题

使用特权

评论回复
10
sszxxm| | 2008-8-5 09:13 | 只看该作者

非常咱头香版的观点

自己也曾经做过3年的FAE,用户发现故障,必须如实准确告知现场情况,这点很重要,还有就是回报情况时,千万不要把自己的主观猜测等经过自己加工后的观点也当成现场资料回报,这些东西往往会把分析引入歧途。

使用特权

评论回复
11
everbright| | 2008-8-5 09:27 | 只看该作者

香版的热情非常感动人,遇到问题香版要嘛咱就提供嘛

使用特权

评论回复
12
dkill|  楼主 | 2008-8-5 12:02 | 只看该作者

香主加油

还有can fifo1接受 不能进中断的问题

使用特权

评论回复
13
dkill|  楼主 | 2008-8-11 09:37 | 只看该作者

rtc时钟晶振 有时能起振 有时不能

使用特权

评论回复
14
eddia2000| | 2008-9-21 19:11 | 只看该作者

12.5p晶振启动时间比6P的长可能才是主要的原因

 

我的板上32.768K晶振(12.5P)也老是出现上电起振难的问题.看到楼主讲主换6P的,我找不到,后来想到也许是12.5P的晶振起动时所需时间要比6P的长,我对RTC的初始化作了一点改动...
这是KEIL RTC例程中的:

/*******************************************************************************
* Function Name  : RTC_Configuration
* Description    : Configures the RTC.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void RTC_Configuration(void)
{
  /* Enable PWR and BKP clocks */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  
  /* Allow access to BKP Domain */
  PWR_BackupAccessCmd(ENABLE);

  /* Reset Backup Domain */
  BKP_DeInit();

  /* Enable LSE */
  RCC_LSEConfig(RCC_LSE_ON);
  /* Wait till LSE is ready */
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {
  }

  /* Select LSE as RTC Clock Source */
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

  /* Enable RTC Clock */
  RCC_RTCCLKCmd(ENABLE);

  /* Wait for RTC registers synchronization */
  RTC_WaitForSynchro();

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
  
  /* Enable the RTC Second */
  RTC_ITConfig(RTC_IT_SEC, ENABLE);

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
  
  /* Set RTC prescaler: set RTC period to 1sec */
  RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
  
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
}

上上代码中的" /* Enable LSE */
  RCC_LSEConfig(RCC_LSE_ON);
  /* Wait till LSE is ready */
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {
  }
"
改为:
  u32 delay;
  
  do
  {
       /* delay about 10ms */
      for(delay = 0;delay < 90000;delay++);
       /* Enable LSE */
      RCC_LSEConfig(RCC_LSE_ON);
  }while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) /* Wait till LSE is ready */

后测试1000次以上都没有上电赶振难发现.但改回原来又好易发生.
大家也可以试试此法是否对你有用.  
 
 

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

201

帖子

0

粉丝