Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
CAN总线
国民技术_N32G45x
RT-Thread活动
【N32G457 】基于 RT-Thread 和 N32G457的CAN 控制盒
发布于 2022-03-16 17:45:37 浏览:1059
订阅该版
一、 **项目背景**: [N32G457] CAN 控制盒,基于国民技术的N32G457开发套件,外接 CAN 模组 (RT_Thread ) 线程控制驱动来测试汽车车灯LAM/LDM.后续计划通过COM/USB 升级变更协议. 由于成本的原因以及芯片限制原因,越来越多的客户要国产化,在产品最终EOL测试阶段需要更低成本的CAN测试盒来驱动不同产品模块,因而用N32G45来测试需求功能 二、 硬件设计 ![image.png](https://oss-club.rt-thread.org/uploads/20220316/02d038767ae56918b74c4b94935dc76e.png.webp) 系统硬件基于MCU为N32G457,采用32-bit ARM Cortex-M4内核,集成高达512KB片内FLASH,144KB SRAM,多达17个高性能模拟器件, 通过TJA1050 CAN 与 产品CAN口通讯. ![image.png](https://oss-club.rt-thread.org/uploads/20220316/8a50f76a662a5032d186d2ce3fda3f2b.png.webp) 三 软件实现 设计和实现, 更改IO 推挽模式为开漏模式 IO (PA1 控制) ``` static void led0_thread_entry(void* parameter) { rt_uint32_t led_count = 0; uint32_t Speed = 500; uint32_t Speed2 = 300; uint32_t Speed3 = 400; GPIO_InitType GPIO_InitCtlStruct; GPIO_InitStruct(&GPIO_InitCtlStruct); GPIO_InitCtlStruct.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_InitCtlStruct.Pin = PA1; GPIO_InitPeripheral(GPIOA, &GPIO_InitCtlStruct); RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO,ENABLE); GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE,ENABLE); /* set LED1 pin mode to output */ rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT); rt_pin_mode(PA1, PIN_MODE_OUTPUT_OD); while(1) { rt_pin_write(LED1_PIN, PIN_LOW); rt_thread_mdelay(Speed3); rt_pin_write(LED2_PIN, PIN_LOW); rt_thread_mdelay(Speed2); rt_pin_write(LED3_PIN, PIN_LOW); rt_thread_mdelay(Speed); rt_pin_write(LED1_PIN, PIN_HIGH); rt_thread_mdelay(Speed2); rt_pin_write(LED2_PIN, PIN_HIGH); rt_thread_mdelay(Speed3); rt_pin_write(LED3_PIN, PIN_HIGH); rt_thread_mdelay(Speed); rt_pin_write (PA1,PIN_LOW); rt_thread_mdelay(20000); rt_pin_write (PA1,PIN_HIGH); rt_thread_mdelay(5000); } } ``` CAN 线程 ``` void can1_send_IDadd(void) { struct rt_can_msg msg = {0}; int Cycle_time = 0; int iCounter = 0; int size =0; /* BCM Light */ msg.id = 0x1f0; /* ID 为 0x123 */ msg.ide = RT_CAN_STDID; /* 标准格式 */ msg.rtr = RT_CAN_DTR; /* 数据帧 */ msg.len = 8; /* 数据长度为 8 */ Cycle_time= 50; /*Cycle time in ms*/ /* 待发送的 8 字节数据 */ msg.data[0] = 0x00; msg.data[1] = 0x80; msg.data[2] = 0x00; msg.data[3] = 0x00; msg.data[4] = 0x00; msg.data[5] = 0x00; msg.data[6] = 0x00; msg.data[7] = 0x00; /* 发送一帧 CAN 数据 */ size = rt_device_write(can1_dev, 0, &msg, sizeof(msg)); if (size < 0) { rt_kprintf("BCM Light CAN 0x1f0h write data failed rc:%d\n",size); } rt_thread_mdelay(Cycle_time); /* BMSH_BATTERY */ msg.id = 0x17A; /* ID 为 0x123 */ msg.ide = RT_CAN_STDID; /* 标准格式 */ msg.rtr = RT_CAN_DTR; /* 数据帧 */ msg.len = 8; /* 数据长度为 8 */ Cycle_time = 100; /*Cycle time in ms*/ /* 待发送的 8 字节数据 */ msg.data[0] = 0x00; msg.data[1] = 0x90; msg.data[2] = 0x00; msg.data[3] = 0x00; msg.data[4] = 0x1a; msg.data[5] = 0xa0; msg.data[6] = 0x00; msg.data[7] = 0x00; … } ``` 四运行效果 ![image.png](https://oss-club.rt-thread.org/uploads/20220316/44474a8830492720a0428261025fa78f.png.webp) ![image.png](https://oss-club.rt-thread.org/uploads/20220316/735521ded0c3208c735b22e85f188074.png.webp) 特殊时期. 疫情又被封闭,很多其他功能无法展开测试 :( 五 附录: 代码: https://gitee.com/techiezhang/n32-g457-can-box
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Techie
这家伙很懒,什么也没写!
文章
2
回答
0
被采纳
0
关注TA
发私信
相关文章
1
我也来传一个CANOpen移植,RTT+STM32F107+CanOpenNode
2
谁有STM32裸跑的CANopen程序啊???
3
CAN驱动程序框架
4
CAN驱动接口如何规范一下
5
RTT无法进入线程.Cannot access Memory
6
编译提示arm-none-eabi/bin/ld: cannot find crt0.o: No such file o
7
rtt 2.1.0 正式版 mdk4 bsp/stm32 编译canapp.c错误
8
STM32F10XCAN驱动使用的问题
9
2.1版本stm32f10x分支bxcan驱动波特率设置的bug
10
rtthread2.1.0下,找不到can1设备
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部