333_S32K144 CAN回调函数

64 篇文章 167 订阅
37 篇文章 19 订阅

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

    继续S32K144的学习,还是进一步深入CAN相关的知识细节。这一次学习小结一下CAN的几个回调函数,因为这个会关系到接下来我对几个协议栈相关知识的探索。不仅如此,整个CAN驱动是协议栈实现的基础,在学习协议栈之前肯定得有一个深入的掌握。

    今天需要看看CAN的接收以及发送等回调函数,其实在S32K144的SDK平台中,这几个回调函数都是融合成了一个。但是,回调函数中存在一个事件儿传递参数,这几个参数能够帮我识别不同的事件类型。

    上面是几种不同事件的定义,其实了解这部分事件究竟是什么比较好的一个参考就是每一个事件定义后面的注释。

    为了能够捕获到这些事件动作,需要注册一个回调函数。注册用到的接口如下:

    而回调函数的原型如下:

    接下来,做简单的测试设计。我做了一个测试回调函数如下:

    上面函数设计完成之后,通过回调函数的注册接口完成回调函数的注册。

    这样,回调函数就可以对各个事件作出相应的逻辑处理。为了能够看到回调函数的动作效果,回调函数中的计数器可以全都通过串口打印出来。

    软件中,注释掉了部分之前的测试代码,稍微有点不美观。注释掉目的是为了让测试结果看起来更明显。由于上面的测试代码中带着一个发送接口,首先可以确认的是这个软件测试的时候会观察到发送成功的回调处理动作。

    动作确实是触发了,不过似乎有一个数目统一不起来。发送回调似乎多执行了一次,后面一定得做一下推理分析。

    通过给CAN总线发送报文,又一次触发了一个事件。这次是报文接收的事件,我们的驱动中使用了FIFO,这里也是FIFO接收。至于其他的几个事件,有的不好在当前的环境中造出来。不过,FIFO的警告或许可以做出来,那就是通过大量给CAN总线发报文实现。

    每毫秒一帧报文,接收功能,看上去没有任何问题。

    每毫秒2帧报文接收,也没有问题。而且从数值差还能够看出每秒大概有2000报文接收到。不过,事件总数似乎是有偏差的,感觉上似乎是有异常了。这算是一个很好的测试用例,后面我可以通过其他的方式来探究一下究竟是什么问题发生了。

    每秒3000帧,依然没有看到其他的事件造出来。或许还是不够多?

    CAN分析仪上位机能够看得出,现在的负载率还没有到最高。其实,这里的信息还是很多的,有一些数据的统计。不知道后面是否可以作为我学习的一个参考。接下来,继续增加报文。

    看起来还没到4000帧/s,但是负载率已经到了95%。

    从现在的调试记录看,只能说这个fifo的接收能力还是很强的。接下来,继续尝试增加负荷。

    我现在CAN波特率是500K,FIFO的扫描频率1ms,其实1ms内,CAN的报文最多4帧左右。6级缓冲的FIFO的确是不该有溢出等问题。看起来,想要造成这个事件应该要降低FIFO的扫描频次。

    果真这次把几个事件都造出来了,这是一个很好的结果,因为这个也让我清楚了这个CAN的接收应该采用怎么样的接收扫描频次才算是合理。其他几个没有测试的事件暂且不去测试了,但是后面或许在我尝试去看其他功能的时候会逐渐测试到。

    在撒丁岛有一句谚语:想要娶老婆,就要先能养活自己。不管是要养活自己,还是养活自己的父母妻儿,我们都需要有自己的手艺。或许有机会能够看到我学习笔记的人,都跟我是或多或少的同行。我祝愿你们能够熟练掌握这门手艺,也希望我这不成熟的学习笔记能够或多或少帮到你!

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

### 回答1: flash_partitioning_s32k144是一个示例代码,用于展示如何在NXP的S32K144微控制器中对Flash存储器进行分区。 首先,了解Flash分区的概念。Flash存储器通常被用来存储程序代码、数据和配置信息等。分区是将Flash存储器分割为多个逻辑区域,每个区域可以被用于不同的目的。这种分区可以提高存储器的使用效率和灵活性。 flash_partitioning_s32k144示例代码提供了以下几个分区: 1. Bootloader分区:用于存放引导加载程序,用来启动设备并加载主程序。这个分区通常是只读的,以确保引导加载程序的完整性和可靠性。 2. 主程序分区:用于存放设备的主要功能代码和数据。这个分区通常是可读可写的,可以根据需要进行更新和修改。 3. 配置分区:用于存储设备的配置信息,包括参数设置、校准数据等。这个分区通常是可读可写的,可以动态地更新和修改配置信息。 通过使用flash_partitioning_s32k144示例代码,开发人员可以轻松地在S32K144微控制器上实现Flash分区,并根据具体的应用需求进行灵活配置和使用。这个示例代码提供了对Flash存储器的抽象和封装,以方便开发人员进行分区管理操作,如读取、写入和擦除等。 总之,flash_partitioning_s32k144是一个示例代码,用于演示如何在S32K144微控制器中对Flash存储器进行分区,以提高存储器的使用效率和灵活性。 ### 回答2: flash_partitioning_s32k144是指对S32K144系列微控制器的闪存进行分区的示例。 在微控制器设计中,闪存是用来存储程序代码和数据的重要组成部分。闪存分区则是将闪存划分成不同的区域,以便更有效地管理和组织存储的内容。这个示例主要是为了演示如何对S32K144微控制器的闪存进行分区。 分区的好处是可以将不同类型的数据存储在不同的闪存区域中,使系统的结构更清晰,提高代码的可读性和可维护性。通过分区,可以将引导程序、应用程序和数据等分别存储在不同的区域中,实现更灵活的存储管理。 闪存分区的设计通常需要考虑以下几个方面:分区的数量、每个分区的大小、分区之间的关系等。在这个示例中,flash_partitioning_s32k144将闪存分为多个区域,比如存储引导程序的区域、存储应用程序的区域、存储数据的区域等。 这个示例还提供了相应的API函数,以便用户可以方便地对闪存进行读写操作。通过这些函数,可以实现对不同分区中的数据进行读写、存储器擦除等操作。 闪存分区的设计是嵌入式系统开发中常见的任务,对于大型项目或需要多个固件镜像共存的系统特别重要。示例flash_partitioning_s32k144提供了一个基于S32K144微控制器的划分闪存的参考方案,使开发者能够更好地进行闪存管理和应用开发。 ### 回答3: flash_partitioning_s32k144是指针对S32K144型号芯片进行的闪存分区的示例。S32K144是一种32位ARM Cortex-M4内核的微控制器,用于汽车电子系统中。由于汽车电子系统对存储空间的要求较高,因此对芯片内的闪存进行合理的分区可以更好地管理存储空间和提高系统的效率。 flash_partitioning_s32k144示例主要包括对芯片内闪存的划分和管理。其中,分区主要包括引导加载程序分区(Bootloader partition)、应用程序分区(Application partition)和数据存储分区(Data storage partition)。 引导加载程序分区用于存储引导加载程序代码,用于启动和初始化系统。应用程序分区用于存储主要的应用程序代码和数据。这样的分区设计使得系统可以方便地进行应用程序的更新,而不会影响引导加载程序。数据存储分区用于存储应用程序中的数据,如配置文件、日志等。 flash_partitioning_s32k144示例还提供了相应的API接口,用于读写和管理不同分区中的数据。这些API接口可以帮助开发人员更加方便地进行存储空间的管理,以满足不同应用的需求。 通过合理的闪存分区设计,flash_partitioning_s32k144示例可以提高存储空间的利用率,降低系统的存储开销,并且方便进行应用程序的更新和维护。这对于汽车电子系统等对存储空间要求高的应用来说,具有重要的意义。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值