Hi yucheng,我查看了我的代码,发现是等待WCO的时间比较长,查看了DS发现确实WCO的startup时间比较长,你可以看看你是不是一样的问题?如果是的话看看是否可以改变一下流程,enable之后到用的时候再看看他的status是否OK,这样不用长时间等待。
Hi Janine:
您好,
我们在这里沟通吧,目前只改了晶振
晶振是16m的,Demo里面是8m
你好,是只开了主时钟和GPIO的功能么?时钟工作是正常的么?
是的,我有看到你上传的附件,那你IO口翻转的时间间隔和你设置的都是一致的么?
Hi Janine:
翻转的间隔是随便设置的,目前我们关注点是在于,第一次操作gpio的时间距离mcu上电的时间
是的,我主要是想看你的晶振是否是在正常工作的。
另外,可以请你试一下reset后到初始化结束需要多久么?测一下XRES_L pin脚。
Hi yucheng,
也是直接测的XRES_L pin脚么?
Hi Janine:
是的,我们把探头直接放到这个引脚上电测试的
你好,我这里暂时没有CYT2B97的芯片,我用CYT2B7的芯片测了一下,用的IMO 8MHz,SDL里GPIO的例程,用你的方法第一次上电测出来900ms左右,hardware reset的话是80ms左右,但是去掉system_init函数,直接在之前就操作GPIO口的话测出来就只有30ms左右,在Datasheet里只能找到boot code的operation时间,你可以参考一下DS的26.4 Reset specifications。
Hi Janine:
感谢您的解答,system_init这里有时钟的初始化,不能去掉吧,我们调试也发现了是system_init这里消耗的时间,这里面有很多个while等待,这个库函数内部该怎么优化呢,
拜托您了
Hi yucheng,
你那边现在有测出来是哪里耗时特别久么?猜测是不是等上电或者时钟稳定的时间?
之前定位到system_Init这里消耗的时间,因为这个函数是官方的,就没有往接着排查了,其他家用这个芯片这里应该都是比较耗时的,有什么优化建议吗
Hi yucheng,我查看了我的代码,发现是等待WCO的时间比较长,查看了DS发现确实WCO的startup时间比较长,你可以看看你是不是一样的问题?如果是的话看看是否可以改变一下流程,enable之后到用的时候再看看他的status是否OK,这样不用长时间等待。
Hi Janien:
这个去掉的话我怎么能知道时钟在不在正常运行呢,这样干也不安全呀,时钟初始化的时候就应该要稳定了
我们初始化的时候就会用到时钟,canfd模块在上电200ms内要求发出报文,如果时钟不稳定肯定不行的,还有别的方法不😂
Hi yucheng, WCO主要是用于RTC的,详细你可以看TRM
像IMO,ILO,ECO的startup时间还是比较短的。
Hi Janine:
从这张图中看出 ECO预分频后可以给RTC模块使用的吧
Hi yucheng,
ECO只在active domain 可以用,deepsleep和hibernate mode时不可用。
Hi Janine:
那需要deepsleep下 然后又可以给RTC提供时钟的,IMO和 ILO是否都可以用,从数据层面看IMO各方面都要由于ILO(电流,启动时间等)
Hi yucheng,IMO从框图上看好像没有能给RTC,ILO的话对于RTC来说误差太大了。实际也只有第一次power on的时候WCO需要这个startup时间。
Hi janine:
那我们需要在上电后200ms进行CAN FD报文的发送,我们应该怎么处理,还是说跟长安反馈 我们的芯片只能做到这样
Hi Janine:
上电启动时间这个问题还比较严重,直接决定了我们能不能满足长安的功能规范了
Hi yucheng,
那可以在用RTC之前开WCO么?把WCO的enable挪到CANFD发送报文后面。
另外,ILO由于精度低,只能用于hibernate wakeup
Hi Janine:
关键是rtc在报文发送前就要使用,上电就需要读取rtc时钟的值,为了电池相关sox的一些校准策略需要
这个是不是可以理解为芯片的bug
Hi yucheng,有点不是很清楚你的应用,是指canfd要把RTC的值发出去么?这个值是做一个什么应用呢?以及你指的上电如果是初次上电(POWER ON reset)的话,这时候RTC的值也不一定是正确的,因为可能之前都没有电。
Hi Janine:
补充说明一下情况,这个rtc值不正确,就会出现车子拧钥匙soc的值会跳动,1s以后才会变成正常值,这样的话长安是不接受的
Hi yucheng,是不是你指的这个上电并不是power on reset? 只是说MCU暂时进入了deepsleep 或hiberate模式之后再回来,这个时候的话WCO是不用重新startup的。一般车子要完全没电了再重新上电才是power on reset。
Hi Janine:
您说的完全正确,但是我们两种工况都会有,这个就是比较麻烦的点
Hi yucheng,一般车子完全没电之后换了电平应该就给ECU上电了,不会是拧钥匙的时候才上电的,你这边是否有上电图来看一下到底是怎么给电的?
一般是换了BATT之后就已经有电了,只是看见ACC没有电就进入休眠了。
Hi Janine:
方便约个con-call嘛
Hi janine:
明天上午9:00-10:00,您有时间嘛,咱们一起约个线上的con-call
Hi Janine:
客户也和车厂再次沟通过,上电后是校准RTC,时钟的值是存储在eep中的,初始化的时候从eep读出来再写入到rtc
Hi yucheng,是指上电200ms后canfd需要发校准之后的RTC值么?是否可以第一次上电的不用正确的RTC值,用一个timer,后面到RTC能用的时候再整合一个数?
Hi Janine:
您帮忙评估下,下面这种工况是否可以用ILO,客户会在上电后读取EEPROM的值 然后写入RTC,对RTC进行校准
Hi yucheng,ILO的误差在+-5%的ILOTRIM值,WCO一般能做到20ppm