玩转X-CTR100 l WS2812全彩LED灯

更多塔克创新资讯欢迎登陆【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】-

X-CTR100控制器STM32F4处理器内置CAN控制器,实现CAN通信功能,需要外扩CAN接口模块,本例程使用NXP的JTA1050模块。

原理

CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应"减少线束的数量"、"通过多个LAN,进行大量数据的高速通信"的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。

CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。关于CAN协议详细介绍,请参考资料文件夹相关文档。

X-CTR100控制器STM32F4处理器内置CAN控制器,支持 CAN 协议 2.0A 和 2.0B,特性如下。

  • 支持 CAN 协议 2.0A 和 2.0B 主动模式
  • 波特率 最高达 1Mbps 1Mbps
  • 支持时间触发通信
  • 具有 3个发送邮箱 个发送邮箱
  • 具有 3级深度的 级深度的 2个接收 个接收 FIFO
  • 可变的过滤器组( 28 个)

STM42F4内部CAN框图。

使用CAN功能,需要增加CAN通信接口芯片,本文使用TJA1050,该芯片兼容PCA82C250。

例程

使用CAN接口模块TJA1050进行CAN通信操作,实现了数据循环发送和数据接收显示功能,可通过2块X-CTR100控制器通信,或者使用1块X-CTR100和CAN分析仪通信,本例程以2套X-CTR100通信为例进行说明。

硬件说明

硬件资源:

  • 串口UART1
  • LED灯
  • CAN扩展接口(LH)
  • CAN接口模块TJA1050(需自备)

连接关系如图所示


连接实物图

软件说明

X-SOFT软件生态,X-API扩展文件如下。

ax_can.c—— CAN通信源文件

ax_can.h——CAN通信接口头文件

接口函数


void AX_CAN1_Init(uint8_t tsjw,uint8_t tbs2,uint8_t tbs1,uint16_t brp,uint8_t mode); //CAN1初始化

uint8_t AX_CAN1_SendMsg(uint8_t* msg,uint8_t num); //CAN1发送数据

uint8_t AX_CAN1_ReceiveMsg(uint8_t *msg); //CAN1接收数据

特殊说明,1.8固件 PLL_N 默认为360,通信时频率错误,之前固件版本为336,改为336后,通信正常。

修改位置为,system_stm32f4xx.c,400行位置。


#if defined (STM32F40_41xxx)

#define PLL_N 336 //360

/* SYSCLK = PLL_VCO / PLL_P */

#define PLL_P 2

#endif /* STM32F40_41xxx */

例程代码主要包括两部分,主程序负责数据定时发送,CAN接收中断负责数据接收和显示。

CAN1接收中断程序代码如下。


//中断服务函数

void CAN1_RX0_IRQHandler(void)

{

CanRxMsg RxMessage;

uint8_t i=0;

CAN_Receive(CAN1, 0, &RxMessage);

printf("RX:");

for(i=0;i<8;i++)

printf("%d ",RxMessage.Data[i]);

printf("\r\n");

}

主程序代码如下。


int main(void)

{

u8 i=0;

u8 canbuf[8];

u8 res;

//XRT1初始化

AX_Init(115200);

printf("***X-CTR100 CAN通信例程***\r\n\r\n");

//CAN初始化,正常模式,波特率500Kbps

AX_CAN1_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);

//设置CAN接收中断

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

NVIC_Config();

//初始化发送数据

for(i=0;i<8;i++)

{

canbuf[i] = 0; //填充发送缓冲区

}

while (1)

{

canbuf[0]++;

res=AX_CAN1_SendMsg(canbuf,8);//发送8个字节

AX_Delayms(100);

AX_LEDG_Toggle();

}

}

为了显示每帧数据差异,发送的第一个字节进行加1操作。

实现效果

两个X0CTR100控制器互相发送接收,打开串口助手即可查看接收的数据。

原文地址:https://www.cnblogs.com/xtark/p/9259958.html

时间: 2024-10-17 16:45:46

玩转X-CTR100 l WS2812全彩LED灯的相关文章

地铁列车全彩LED电子显示屏的设计制作技巧

地铁上的LED显示屏分两种:一种放置于车厢外侧,用于显示列车运行区间.运行方向和当前到站站名,中英文兼容显示:也可根据运行需要显示其他服务信息:文字显示可选静止.滚动.平移.瀑布.动画等多种效果,最大显示字符数为16 ×16 点阵字符12个.另一种为终点LED电子显示屏,放置于车内,终点站全彩LED显示屏可按列车运营要求预置终点站,并实时显示当前的终点站,同时还能显示目前车内温度,最大显示字符数为16 ×16 点阵字符8 个. 全彩LED显示屏系统由单片机控制单元和显示单元两部分组成,单个显示单

全彩LED电子屏幕屏体防护的技巧

LED电子显示屏体系所触及的产物都经过防酸雨.防盐雾.防水.防潮.防尘.防焚烧.防腐蚀等处置,经过盐雾实验,实验结果表明:产物均到达国家工业规范,契合盐雾实验需求,即便在海洋性气候的条件下,屏幕也可以长时间正常运用.下面,齐普光电为您分析一下如何为LED大屏幕的屏体防护? 一.LED屏幕防护体现在以下方面: 1.LED屏幕体系屏体外点缀由耐腐蚀功用非常好的阻燃性资料优质铝塑板制造,板材之间拼缝紧密填充优质耐候胶. 2.LED屏幕体系中像素和模组间用绝缘橡胶圈压封以阻碍水分浸透. 3.点缀与模组间

全彩LED电子屏分类的三大标准

一.智能型和功能型LED显示屏特点: 1.智能型显示屏平时无需连接上位机,LED电子屏有内置CPU,能掉电保存多幅画面舆可脱离上位机独立运行.一些屏幕和时钟芯片,可自动显示日期和时间.当需要修改显示内容时,通过RS-232接口连接微机即可修改.全功能型屏幕必须连接到电脑的工作. 2.智能型显示屏的显示方式通常较少,有拉幕式.弹出式.上滚式和下滚式等几种.全功能型显示屏的显示方式多样,如果用专业软件制作 播放节目,则显示方式有无限多种. 3.智能型显示屏的操作简单,全功能型显示屏则需由专人操作维护

全彩LED电子屏幕室内应用和户外广告机将成市场趋势

为了整治光污染等问题,大屏幕户外安装的审批越来越困难,这也就意味,优质的安装位置越来越稀缺,对于LED显示屏厂家而言,想要实现户外应用量上的突破也越来越不容易.当户外应用不足以支撑业绩的增长,LED显示屏厂家将目光投向了以前无法企及的室内应用市场,而LED显示技术的提升则成为了进军的信心. 室内空间有限,而传统的LED显示屏有近距离观看颗粒感强的弊端,与画面显示细腻的液晶.等离子等产品相比,其必然不会成为用户的首选对象.不过,随着小间距LED显示屏的迅速崛起,这一短板得到了有效弥补.画面显示效果

全彩LED电子屏幕的产业发展趋势

一是产品技术的深化和产品的多元化 中国LED屏幕产业的技术基础和水平应该说还是相当先进的,主要产品和关键技术与国际同行业的先进水平能够保持一致,但工艺水平比较落后,在产品规范化.整机系统设计.可靠性.制造工艺.检测测试手段等方面与国外有明显的差距. LED器件技术和性能不断提高,电子技术发展日新月异,这为LED显示屏产品的技术深化和提高带来良好的基 础.同时LED电子显示屏在社会生活的各个领域得到了广泛的应用,半导体照明产业的发展更为LED显示产业带来良好契机,因此,LED显示市场发展前景乐观.

搜酷——全球智能硬件与技术精华集(全彩)

搜酷——全球智能硬件与技术精华集(全彩)(汇集智能硬件.可穿戴设备.机器人.物联网.3D打印等上百种前沿产品及其理念与技术,科技发烧友.智能硬件创客.电子极客.产品经理.工业设计师.概念产品爱好者.科技观察者热捧阅读) 杨明慧 编著   ISBN 978-7-121-23959-5 2014年8月出版 定价:59.00元 236页 16开 编辑推荐 巴西2014年世界杯的第一球非常特殊,它是由一位残疾孩子开出的,本书为您揭密! 当3D打印实实在在地进入我们的家里了——家里来客人啦!小丽,打3双筷

android 玩愤怒的小鸟等游戏的时候全屏TP失败

1.tp driver的tpd_down()和tpd_up()函数不需要进行报告id号码.自己主动顶级赛: 2.tpd_up()功能只需要报告BTN_TOUCH和mt_sync信息,其他信息未报告,如下面: static  void tpd_up(int x, int y,int *count) { input_report_key(tpd->dev, BTN_TOUCH, 0); //printk("U[%4d %4d %4d] ", x, y, 0); input_mt_sy

dem及全彩影像数据tif文件分辨率问题

原始数据有投影与非投影的坐标区分,gdal工具可以进行检测.其分辨率也有米和度的单位区分. 如果投影变换前是投影坐标系统,投影转换后也是投影坐标系统,或者另外一种情况:投影变换前是地理坐标系统,投影变换后也是地理坐标系统,并且坐标的单位都一致的,那么分辨率大小基本上没变换,可以用变换前的分辨率大小.如果变换前是地理坐标系统,投影变换后是投影坐标系统,假设地理坐标系统以度为单位,投影坐标系统以米为单位,那么投影后的像素大小可以这样估计,因为经线上一个纬度的距离大约是111km,那么变换后的分辨率可

PIXHAWK DIY LED扩展板

板载的状态LED灯,因为各种灰机的外壳有可能会被挡住看不到状态.那么我们也是可以用arduino板子来扩展实现外置,其实就是用328P芯片来实现. 这程序支持WS2812B的全彩LED灯. 默认的信号控制引脚是A1(15),LED数量是8个,你可以根据你的实际情况修改. 带FastLed类库的包下载 代码使用了FastLed的第三方类库可以自己下载 代码如下: #include <Wire.h> #include "FastLED.h" #define NUM_LEDS 8