展开

关键词

STM32之CAN

ISO11519定义了速率为10~125Kbps的低速CAN标准,属于开环总线,传输速率为40Kbps时,总线长度可达1000米; ISO11898定义了速率为125Kbps~1 Mbps的高速 CAN是一种基于消息广播模式的串行总线,即在同一时刻网络上所有节点监测到的数据是一致的,各节点根据报文ID来甄别是否是发给自己的报文。 CAN总线以“帧”(Frame)的形式进行。 主控制寄存器主要控制CAN的工作模式,在后面设置CAN协议初始化时,实现对该寄存器的修改。位时序寄存器主要涉及CAN的工作速率,由于CAN是异步号,同串口类似,需要收发双方提前统一速率。 除此之外,为保证稳定,CAN采用“位同步”机制,实现对电平的正确采样。 RS485接口并打印;本实验配套代码位于“5_程序源码\15_CAN\”。

12510

CAN的采样点

熟悉CAN总线的朋友应该都知道,CAN中的每一位分为四个部分,在CAN中线的标准里都有明确描述,之前在CAN总线的相关推送里也讲过几次,尤其在配置CAN总线波特率的时候,这几个时间段都要在相关寄存器配置 而单采样点一般位于相位缓冲段1之后,采样点顾名思义,从名字就可以看出,是读取总线电平,并解释各位的值的一个时间点,采样点对CAN总线来说也非常重要,尤其在组网的时候,多个节点尽量保持同一个采样点,且最好在但不超过 而CAN组织CiA也对采样点进行了详细的描述。 ? 虽然有时候,同一个波特率可以有几个对应的位时间段配置,但还是要选择一个符合最佳采样点的配置,在J1939标准中还给出了几个例子 ? ? 希望对你有所帮助,在自己动手写CAN配置CAN位速率的时候尽量使采样点靠近7/8位时间点。

3.7K10
  • 广告
    关闭

    腾讯云即时通信IM,新客首月99.9元

    腾讯云即时通信,1分钟跑通DEMO,结合开源 UI 库,快速搭建IM 应用,全球多点覆盖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CAN滤波设置

    CAN中,有时候我们只想接收需要的ID,而滤出掉不需要的消息,这时候我们就需要添加滤波配置,本次以STM32F103RC为例来说明,首先来看什么是有效报文 01 有效报文 根据CAN协议,当报文被正确接收 ,这里指的是直到最后一位都没有报错,且过了标识符过滤,那么该报文被认为是有效报文,是我们需要的报文。 02 标识符过滤 你可以简单的把他理解成和我们日常生活中的过滤一样,就是滤掉不需要的,剩下我们需要的,在CAN协议里,报文的标识符是跟报文的内容相关的,过滤是配置后,硬件完成,无需CPU开销,在F103 那么在CAN的初始化程序里面,我们就要加上过滤 ? ? 然后在启动CAN使能中断,初始化就完成了。 ?

    24610

    CAN之BSP封装

    摘要 本篇笔记主要介绍,在STM32H743芯片上实现CAN,封装为BSP驱动,为之后实现CAN的高层打下基础。 2. 此外,第一个 CAN 模块 FDCAN1 支持 ISO 11898-4 中规定的时间触发 CAN (TTCAN),包括事件同步时间触发、全局系统时间和时钟漂移补偿。 CAN 框图 ? CAN的底层大部分ST已经在HAL库里面封装好,如果你细看HAL源码,搞懂这张图,H743的CAN 你基本上就没有了,在结合HAL库的学习。 4. 驱动实现 良好的驱动封装,可以方便应用开发,并且可以容易移植到其他项目,代码重用率高,所以数据和接口是你不得不考虑的,怎么样方便的实现,还要用易用。 使用USB-CAN连接到电脑端测试。 ? ? ? 至此我们的CANBSP驱动封装就验证完成,可以轻松移植到其他板卡上。关注我,为您带来更多精彩内容 6.

    32710

    CAN管脚重映射

    CAN管脚重映射 1. 摘要 本篇笔记主要介绍,如何在STM32F103上进行CAN的管脚重映射配置和使用 2. 准备工作 1), IAR 8.3.1 2), 运行正常的CAN工程 3. 指出 STM32F103VC芯片100脚的封装,CAN可以重映射到三组管脚,分别是PA11和PA12为一组,PB8和PB9为一组,PD0和PD1为一组。 解决 1), 直接使用CubeMX重新配置生成初始化部分,覆盖原有工程初始化 ? 2), 手动修改原有工程的初始化部分管脚映射,并添加重映射寄存器配置。两种方法均可。 不添加重映射寄存器,原有工程在新工程是无法运行的,同步上,我们将原有工程添加重映射配置,并修改PA11和PA12为PD0和PD1 ? 其实可以过下面的图片清楚的知道重映射 ?

    28610

    专栏】STM32单片机小谈CAN

    】STM32单片机/485详解 我们可以提几个一:CAN的数据是如何打包的? 当然也可以写一个用的发送数据函数,而把结构体的定义,初始化部分提出来单独定义。总之可以根据需要灵活变了。 二:CAN如何初始化配置? 三:CAN如何确定接收数据对象的地址? 在485中,我们需要自己软件定义一个虚拟地址;SPI中我们靠片选号线来选中从设备;I2C中我们从机有固定的硬件地址。 那CAN如何实现地址的确定呢? 其实CAN不存在设备地址这个概念,它过我们上个中数据帧初始化的ID号进行辨别。 四:CAN如何解决的时序? 在我们之前学过的中都会有一个时钟线来同步息的发送,但CAN只有两个差分号线。那它如何解决时序呢?

    75020

    如何计算CAN波特率

    CAN波特率的计算是一个难点,要正确计算设置CAN波特率。CAN2.0协议中定义标称位速率为一理想的发送器在没有重新同步的情况下,每秒发送的位数量,也就是我们说的波特率。 ? 这两个段可以过重新同步加长或缩短。 采样点: 采样点是读总线电平并解释各位的值的一个时间点。采样点位于相位缓冲段1( PHASE_SEG1)之后。 息处理时间 (INFORMATION PROCESSING TIME) 息处理时间是一个以采样点作为起始的时间段。采样点用于计算后续位的位电平。 模块不能正常讯。 讯波特率呢?

    81880

    CAN协议的相关知识

    CAN协议用于汽车中各种不同元件之间的,以此取代昂贵而笨重的配电线束。该协议的健壮性使其用途延伸到其他自动化和工业应用。 CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行协议。 为适应“减少线束的数量”、“过多个LAN,进行大量数据的高速”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 协议。 从节点不能主动向主节点传输息,只有主节点需要从节点才能发送息;CAN总线没有主从之分,总线上得节点都可以在总线空闲时互相,如果两个节点同事发送息,那么按报文优先级来分,优先级高的可以先发,优先级低的后法 从速率上说,CAN总线最高速率可达1Mbit/s(此时距离最长30米),LIN总线只有20Kbit/s左右。 CAN总线输入、输出为差动号,LIN总线输入、输出为+12V 单端非平衡号。

    68330

    CAN调试监测神器之CANCapture

    你想像组态软件一样来配置调试你的CAN吗,今天就来看看CANCapture神器 CANCapture简介 CANCapture是一种可视化的控制和监控CAN软件,采用功能块配置流程图式的简单易用 ,高度灵活可配置,本人用过后,很是喜欢,对CAN的调试和监控有很好的帮助,那么如何使用呢,继续往下看。 建立数据库 建立数据库,数据库的建立至关重要,这里包含所有的数据帧和变量,功能模块中的都是基于数据库。为便于说明,我们建立一个简单的数据库如下图所示: ?

    42560

    Python Socket黏包

    参考:http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5 1.黏包的表现(以客户端远程操作服务端命令为例) 注:只有在TCP协议的情况下 ,才会产生黏包 基于TCP协议实现的黏包 #! () #关闭socket tcp_client_package 存在的: 程序的运行速度远快于网络传输速度,所以在发送一段字节前,先用send去发送该字节流长度,这种方式会放大网络延迟带来的性能损耗 方案二:针对方案一的,引入struct模块,struct模块可以将发送的数据长度转换成固定长度的字节 ? [WinError 10013] 以一种访权限不允许的方式做了一个访套接字的尝试 原因:端口被占用导致 解决: Windows下 C:\> netstat -ano|findstr 8080

    19420

    解决帝国CMS安装出现Use of undefined constant can - assumed can

    但是在恢复安装帝国CMS的时候有提示错误"Warning: Use of undefined constant can - assumed 'can' (this will throw an Error 需要先解决。 从报错息可以看到"this will throw an Error in a future version of PHP"应该是PHP版本不支持,默认看到是安装的PHP7.3版本,然后降级至7.0再试试 这样就解决。 本文出处:老蒋部落 » 解决帝国CMS安装出现"Use of undefined constant can - assumed 'can'" | 欢迎分享

    18940

    卧槽,电容引起了CAN不正常

    摘要 本篇笔记主要记录基于恩智浦MPC5744P的CAN驱动开发和测试过程中使用英飞凌TLE9252带功能安全的CAN收发器时候遇到的。 安装S32DS 的SDK, 我们使用最新版3.0.3 提出 恩智浦的MPC5744P控制器局域网络CAN,跟我们之前使用的恩智浦Kinetis KV, 等系列的flexCAN结构基本是一样的,本次在开发过程中在使用英飞凌 TLE9252收发器时候,之前开发的可以正常的工程无法。 解决 先将CAN跳线到另一路非功能安全的收发器,CAN收发正常,排除CAN驱动软件。 总结 在经典CAN设计中,速率低的时候可以不用这两个电容,在带有CANFD的中,CAN FD 速率比较高,一般需要添加这两个电容,但容值不易大,可以用示波器抓下波形,调整为合适值。

    14510

    你还没学会CAN波特率的设置?

    记得最早是在15年就给大家推送过关于CAN波特率的设置,当时是以NXP的kinetis系列之KV46为例子来给大家介绍的,最近推送了几篇有关CAN的文章,后台又有人起这个,今天我们就来在给大家详细普及下 mscan跟flexcan两者使用不同的芯片IP,所以在寄存器级别上有不小区别,今天我们来一步步看如何在mscan上配置can的比特率,首先要搞明白CAN标准对位时间的定义,CAN波特率的计算是一个难点 ,要正确计算设置CAN波特率。 这两个段可以过重新同步加长或缩短。 采样点: 采样点是读总线电平并解释各位的值的一个时间点。采样点位于相位缓冲段1(PHASE_SEG1)之后。 如何计算CAN波特率 精彩推荐: CAN调试监测神器之CANCapture 我怼了硬件工程师,让你不按datasheet设计 一起来学习CAN FD(CAN with Flexible Data-Rate

    1.5K10

    CAN控制一拖二直流无刷电机

    摘要 本篇笔记主要介绍,CAN控制两个直流无刷电机的快速开发和应用 2. 准备工作 IAR 8.3.1 3. 工程建立 这次工程以STM32F103RC为例用CAN驱动控制两路直流无刷电机,带霍尔传感器,TIM1和TIM8用来输出PWM,TIM2和TIM4用来接霍尔,采用6步法控制算法实现电机的换向和控制,电机的转速由霍尔号计算 CAN的配置为250kbps ? ? 在基础工程做完后,就需要根据应用添加其他模块和算法, ? 其中主要难点是PID参数的整定和转速调节,以及速度的获取,转速息可以过读取霍尔值,用于转速计算,而转速的计算算法可以从数据手册获取,如下图所示 ? 电机电流的获取过DMA,减少CPU的负担,主要模块添加完后,添加一些保护门限值。本系统CAN控制各个电机,系统多达10台电机,所有驱动板采用一拖二用设计。软件也采用模块化设计。 5.

    33520

    优秀的 VerilogFPGA开源项目介绍(七)- CAN

    其中: ISO11898 定义了速率为 125 kbps~1 Mbps 的高速 CAN 标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。 ISO11519 定义了速率为 10~125 kbps 的低速 CAN 标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。 1B5C60ZjPpmPA 提取码:PR9t 复制内容打开和彩云PC客户端,操作更方便哦 3、【小梅哥FPGA】使用FPGA实现CAN的例子(NIOS+CAN IP) ❝https://bbs.elecfans.com 简介 CAN总线作为工业和汽车领域最常用的总线,具有拓扑结构简洁、可靠性高、传输距离长等优点。 你只需将以上4个文件包含进工程,就可以调用can_top.sv进行更高层次的CAN业务的二次开发。 此项目非常完整,项目由中文说明,完备的TB及测试方案。

    19130

    关于战略之六

    ========================= 关于战略之六 作者:Joel Spolsky 译者:阮一峰 原文网址:http://www.joelonsoftware.com/items 所以,我们都不怎么关心软件的效率或优化。 不过有一个例外,那就是在浏览器的Ajax应用程序中使用的JavaScript语言。因为这是当前几乎所有的软件开发工作的方向,所以这是一个重大的。 眼下,在跨平台这出连续剧中,正出现又一个高潮,那就是----没错,你猜对了----客户端Javascript的兼容性,尤其是浏览器DOM(文档对象模型)的兼容性。 至于怎么编译,那是编译器作者需要解决的,与你无关。 这个"客户端"是智能的,它知道如何将表单呈现给你,允许你将数据输入表单,在这个过程中,根本不与主机

    42070

    Kuberbetes Pod间无法处理

    故障的表现主要是,部署一个nginx服务并创建对应的service后,在master节点无法过ClusterIP访服务,但是在worker节点可以正常访该服务。 明白了上面两类IP以及转发规则后,我们来看具体遇到的。 [k8s-pod-network-problem-7.png] 那么我们现在的就转换成了在master节点中访10.244.1.2的服务,这个也是不的。 找到了的原因,下一步就是分析是什么造成了这种情况。过上面的分析我们知道,错误目的地址的数据包是节点A的flanneld进程发送的。 而解决这个的过程可以让我们更好的理解k8s的网络原理。 至于不再同一内网且公网IP未显示绑定在网卡上的机器如何搭建集群,后面我会单独写一篇文章。

    1.5K62

    一次 HTTP2 失败的分析

    因为 HTTP/2 要求过 HTTPS ,所以这里抓包,还需要用到 wireshark 抓取 HTTPS 包的一些技巧。至于这么做,我在之前的 B 站分享有讲过,大家如果感兴趣可以看看。 wireshark 解密结果 看起来就是 HTTP2 服务端的发了一个错误的包导致客户端回了 rst 帧。 接下来继续看 HTTP/2 服务端回复了什么。过查看包,果然发现了一些有意思的。 怀疑是这个导致的,同时发现过增加一个 Cache-Control 请求头,返回结果里 expires 头部就没有返回了,请求就成功了,因此更加确认是这个。 进一步分析 为什么有空格会出现呢?当然要从 curl 的底层去分析,curl 的 HTTP/2 底层是用 nghttp 这个库来实现的,nghttp 本来也可以过命令行直接发起请求。 过 GDB 同步确认这一点 GDB 调试 至此,我们就知道了为什么 curl 在处理带有空格头部时的,chrome、safari 也有类似的,大家感兴趣可以看看。

    6410

    用这种结构做CAN数据封装太爽了

    摘要 本篇笔记主要记录基于恩智浦MPC5744P的CAN驱动开发和测试,接口设计,封装为BSP驱动,为之后实现CAN的高层打下基础。。 要正常与其他CAN设备,必须外接收发器。关于MPC5744P的 flexCAN模块的特性可以参考收据手册,这里不在赘述。有四种工作模式,正常模式,监听模式,回环模式,和禁止模式。 驱动实现 良好的驱动封装,可以方便应用开发,并且可以容易移植到其他项目,代码重用率高,所以数据和接口是你不得不考虑的,怎么样方便的实现,还要用易用。 这个封装大家可以记着,我在多款器件上都是这么封装的,之前在NXP的KE06, KEA, KV46, K64等系列,在ST的F103, F446, H743等等CAN都采用这种封装BSP驱动。 中断回调函数 最主要的就是传输回调函数的实现,MPC5744P的回调函数参数有事件,所以可以根据事件来判断是接收还是发送。

    19520

    相关产品

    • 即时通信 IM

      即时通信 IM

      即时通信 IM(Instant Messaging)基于 QQ 底层 IM 能力开发,仅需植入 SDK 即可轻松集成聊天、会话、群组、资料管理能力,帮助您实现文字、图片、短语音、短视频等富媒体消息收发,全面满足通信需要。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券