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

    文章

    1309

    浏览量

    39862
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2471

    浏览量

    459328
  • 时钟
    +关注

    关注

    10

    文章

    1480

    浏览量

    130306
  • Cortex-M
    +关注

    关注

    2

    文章

    224

    浏览量

    29574
  • nop
    nop
    +关注

    关注

    0

    文章

    9

    浏览量

    1856

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    使用STM32F042单片机做的CAN通讯,运行一段时间通讯异常的原因?

    使用STM32F042单片机做的CAN通讯,运行一段时间发现通讯异常,当通讯异常时,重新下载程序通讯恢复。因为此程序是只有收到外部CAN
    发表于 03-15 07:11

    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

    属性节点问题 Bytes at port 为什么每隔一段时间都输出0

    `如图所示 每隔一段时间都有1个0输出,经检测证实是属性节点问题,每隔一段时间本来是20字节就突然变成0字节然后又变回20字节,就闪那么
    发表于 05-20 16:49

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

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

    请问STM32运行一段时间死机,手动复位无效只能重新上电是什么原因?

    STM32运行一段时间死机,手动复位无效,只能上电复位才能正常运行,已排除外部复位电路,是不是STM32F103CBT6的芯片问题啊? 补
    发表于 09-29 10:07

    请问LabVIEW如何实现将周期性发送的CAN消息丢失一段时间

    CAN消息周期性发送,根据测试用例丢失一段时间,然后恢复周期性发送
    发表于 10-25 15:14

    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 4845次阅读
    米尔科技NXP <b class='flag-5'>LPC4357</b> <b class='flag-5'>LPC</b>4350 Cortex-M4/M0开发板介绍

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

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