杰发科技AC7840——CAN通信简介(2)

2024-01-08 08:28

本文主要是介绍杰发科技AC7840——CAN通信简介(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.时钟频率

2.位时间

3.采样点

4.消息缓冲区

和ST、NXP的邮箱类似,AutoChips用了缓冲区的概念。

5.接收缓冲区

屏蔽掉demo程序的发送,只看接收情况

在回调中接收数据

先判断是不是进了接收中断

接收数据的处理函数

所有buff数据放到Info

buff的内容

BUFF的地址

标准帧buff寄存器定义

扩展帧buff寄存器定义

这里的80个字节和上面的到75似乎对不上

再看下寄存器定义,发现应该是还有保留字节。

至此,CAN接受已经大致清楚了,知道他是怎么分布的。

6.发送缓冲区

调用接口

组帧

发送帧数据结构定义

排除ERROR和BUSY状态后开始填充数据到BUFF

前面填充信息位

后面填充数据位

void CAN_WriteTbufData(CAN_Type *base, const uint8_t *txData, uint8_t length)
{DEVICE_ASSERT(txData != NULL);uint8_t i;uint32_t *data = (uint32_t *)&base->TBUF.DATA[0];for (i = 0U; i < length; i += 4U){*data++ = *(uint32_t *)(&txData[i]);}
}static inline void CAN_SelectNextTsbuf(CAN_Type *base)
{base->CTRL0 |= CAN_CTRL0_TSNEXT_Msk;
}

数据填充完毕开始发送

State列表

/* CAN state struct */
typedef struct
{uint32_t                  interruptFlag;            /* CAN interrupt flag */bool                      initState;                /* CAN initialization state */bool                      interruptEn;              /* CAN interrupt enable */bool                      timeStampEn;              /* Time stamp enable */bool                      dmaRecvEn;                /* DMA receive enable */bool                      memEccEn;                 /* CAN memory ECC enable */semaphore_t               txCompleted;              /* Transmit completed */semaphore_t               rxCompleted;              /* Receive completed */can_transmit_sec_amount_t tsAmount;                 /* Transmit secondary all frames or one frame */can_callback_t            callback;                 /* CAN callback function pointer */can_callback_t            wakeupCallback;           /* CAN wakeup callback function pointer */
} can_state_t;

can_transmit_sec_amount_t列表

typedef enum
{CAN_TRANSMIT_SEC_ALL = 0U,                      /*!< Transmit secondary all messages */CAN_TRANSMIT_SEC_ONE                            /*!< Transmit secondary one message */
} can_transmit_sec_amount_t;

置位

void CAN_StartTransmit(CAN_Type *base, can_transmit_buff_t type, can_transmit_sec_amount_t amount)
{if (CAN_TRANSMIT_PRIMARY == type){base->CTRL0 |= CAN_CTRL0_TPE_Msk;}else{if (CAN_TRANSMIT_SEC_ALL == amount){base->CTRL0 |= CAN_CTRL0_TSALL_Msk;    /* Send all messages */}else{base->CTRL0 |= CAN_CTRL0_TSONE_Msk;    /* Send one message only */}}
}

置位之后,硬件开始发送。至此,发送缓冲大致走了一遍。

这篇关于杰发科技AC7840——CAN通信简介(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582863

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供