0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LPC4357FET256 CAN0复位后,需要插入NOP延迟一段时间

li1756686189 来源:嵌入式 MCU 2023-01-14 14:28 次阅读

4f83c16e-93d4-11ed-bfe3-dac502259ad0.png

50bded5c-93d4-11ed-bfe3-dac502259ad0.png

CAN0复位后,在访问CAN0外设之前,应该添加至少20个NOP的复位延迟,而不是9个NOP复位延迟。否则无法访问CAN0寄存器。9个NOP复位延迟是在将108MHz的Fcclk除以12MHz的FIRC内部时钟之后获得的,如下LPC43xxUM文档第15.4.1节备注所示。

50eef80c-93d4-11ed-bfe3-dac502259ad0.png

/* Chip_SetupCoreClock(CLKIN_CRYSTAL, MAX_CLOCK_FREQ, true); */

// Chip_SetupCoreClock(CLKIN_CRYSTAL, 108000000, true);

// CCLK 12MHz

Chip_SetupCoreClock(CLKIN_CRYSTAL, 12000000, true);

已通过轮询复位标志成功等待CAN0退出复位。

Chip_RGU_TriggerReset( RGU_CAN0_RST );

//NOP_operation();

while(Chip_RGU_InReset(RGU_CAN0_RST))

为什么 9 或者10 个NOP复位延迟时间不满足要求,而20个NOP确可以呢?使用108Mhz时钟作为内核时钟,如用户手册所说,在复位CAN后,需要等待108Mhz/12Mhz = 9个周期。但是实际测试需要20个周期数。当内核时钟是12Mhz的时候,0或者1个等待周期数都是可以的。

-> 使用"NOP"来实现 NOP_operation()是有风险的,由于Cortex-M用户手册提示如下:

NOP is not necessarily a time-consuming NOP. The processor might remove it from the pipeline before it reaches the execution stage.

511d9afe-93d4-11ed-bfe3-dac502259ad0.png

51431338-93d4-11ed-bfe3-dac502259ad0.png

可以使用MOV r0,r0或硬件定时器来实现等待周期,以避免编译器和优化级别配置的影响。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40275
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2744

    浏览量

    463606
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131445
  • Cortex-M
    +关注

    关注

    2

    文章

    229

    浏览量

    29752
  • nop
    nop
    +关注

    关注

    0

    文章

    9

    浏览量

    1924

原文标题:LPC4357FET256 CAN0复位后,需要插入NOP延迟一段时间

文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    tc264隔一段时间复位有些什么原因呢?

    tc264隔一段时间复位有些什么原因呢
    发表于 02-02 07:31

    STM8L运行一段时间死机,手动复位无效怎么解决?

    我们的是电池供电,LDO给主板供电,设备在用户手上运行一段时间,莫名死机,回来拆机发现STM8L RST管脚始终处于低电平,必须拔电池上电才能复位复位
    发表于 04-11 06:19

    STM8串口工作一段时间出现通讯异常的原因?

    能串口。发送数据前先发送几个0x00唤醒对方再发有用数据。通讯速率很低。 产品在终端客户手上使用一段时间可能会出现通讯不上的问题。出现问题后过一段时间可能会自行恢复。通过对STM8
    发表于 04-15 08:05

    STM8L运行一段时间死机,手动复位无效,只能上电复位怎么解决?

    我们的是电池供电,LDO给主板供电,设备在用户手上运行一段时间,莫名死机,回来拆机发现STM8L RST管脚始终处于低电平,必须拔电池上电才能复位复位
    发表于 04-15 07:56

    STM3218B20读取一段时间0是怎么回事?

    18b20读取一段时间0
    发表于 04-22 06:58

    VL53L0在使用一段时间无法读取数据如何解决?

    VL53L0在使用一段时间无法读取数据,已经有好几个模块了,返回的错误代码有-6,-7和-20,这个到底是怎么回事?如何解决?
    发表于 05-28 08:07

    ADS1013采集运放输出数据,一段时间变的很低是为什么?

    我用ADS1013采集AD8237运放输出直流数据,开始采集得到的原始数据为683,对应1.3v。一段时间大概5-9分钟,ads1013读出来的数据变成11,对应0.02v,然后不再发生变化。需要系统
    发表于 12-17 07:09

    请问CC2630运行一段时间会自动复位是什么原因

    CC2630成功加入CC2530组建的网络,运行一段时间大概几十秒吧,就自动复位了,从断点中可以看到他从新开始运行,目前排除是电源的问题,使用的是zstack_home_1.2.2a协议栈,用的是SampleSwitch工程。
    发表于 08-18 06:40

    STM32运行一段时间死机,手动复位无效,只能上电复位才能正常运行

    STM32运行一段时间死机,手动复位无效,只能上电复位才能正常运行,是不是STM32F030R8T6的芯片问题啊? 补充下,程序是做低功
    发表于 01-08 09:39

    回收LPC4357FET256 收购LPC4357FET256

    LPC4357FET256大量回收!高价收购LPC4357FET256!!高价收购LPC4357FET256!!! 大量回收LPC4357FET256!专业回收
    发表于 11-08 11:52

    STC使用一段时间真的会掉固件吗?

    STC使用一段时间真的会掉固件?
    发表于 10-31 08:29

    米尔科技NXP LPC4357 LPC4350 Cortex-M4/M0开发板介绍

    NXP LPC4357FET256处理器
    的头像 发表于 11-04 14:43 5752次阅读
    米尔科技NXP <b class='flag-5'>LPC4357</b> <b class='flag-5'>LPC</b>4350 Cortex-M4/M<b class='flag-5'>0</b>开发板介绍

    微雪电子LPC Cortex M4开发板 Core4357简介

    LPC4357FET256 核心板 最小系统板 引出了所有I/O资源 带JTAG/SWD调试下载接口 型号 Core4357 产品简介 Core4357款基于
    的头像 发表于 12-27 09:31 2742次阅读
    微雪电子<b class='flag-5'>LPC</b> Cortex M4开发板 Core<b class='flag-5'>4357</b>简介

    Arduino 接MPU6050 9250使用IIC通讯,输出数据一段时间死机卡死的问题解决

    Arduino 接MPU6050 9250使用IIC通讯,输出数据一段时间死机卡死的问题解决
    发表于 12-06 15:06 24次下载
    Arduino 接MPU6050 9250使用IIC通讯,输出数据<b class='flag-5'>一段时间</b><b class='flag-5'>后</b>死机卡死的问题解决

    维修力科示波器604ZI开机一段时间黑屏

    一段时间黑屏维修 、示波器维修型号:力科604ZI。 二、报修故障:开机使用一段时间黑屏。 三、故障检测:对内部元件进行详细检测。仪器
    的头像 发表于 12-11 16:18 479次阅读