找回密码
 立即注册
查看: 1206|回复: 8

can通讯遇到问题,第一次用STC32G12k128进行CAN通讯

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2023-12-13 10:49:56

4

主题

7

回帖

54

积分

注册会员

积分
54
发表于 2023-10-12 11:25:09 | 显示全部楼层 |阅读模式
can通讯遇到问题,第一次用STC32G12k128进行CAN通讯,设备数据是AA 01 00 08 07 00 00 01 00 53 00 53 08 01 21 10 7A ,用STC32收到的数据是88 38 00 00 08 00 53 00 53 48 01 21 10 00 00 00,不是原装数据包,我是直接从FIFO读出来的,实在不知道什么原因,和例程说明是一致的只有13个字节,在哪里可以收到原装的,库的读函数我重写了F_CAN_ReadMsg:

                MOV    R0,#RX_BUF
                MOV     A, #RX_BUF0
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF1
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF2
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF3
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0

                MOV     A, #RX_BUF0
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF1
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF2
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF3
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0

                MOV     A, #RX_BUF0
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF1
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF2
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF3
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
               
                MOV     A, #RX_BUF0
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF1
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF2
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0
                MOV     A, #RX_BUF3
                CALL    F_CAN_ReadReg
                MOV     @R0, A
                INC     R0

                RET


回复

使用道具 举报 送花

0

主题

2

回帖

22

积分

新手上路

积分
22
发表于 2023-10-12 11:38:19 | 显示全部楼层
直接用官方库函数吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2023-12-13 10:49:56

4

主题

7

回帖

54

积分

注册会员

积分
54
发表于 2023-10-12 11:48:54 | 显示全部楼层
右移3位ID也是对的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2023-12-13 10:49:56

4

主题

7

回帖

54

积分

注册会员

积分
54
发表于 2023-10-12 12:10:39 | 显示全部楼层
运行官方例程出现下列问题Rebuild target 'FreeRTOS_STC32G_Demo'
compiling croutine.c...
compiling event_groups.c...
compiling list.c...
compiling queue.c...
compiling stream_buffer.c...
compiling tasks.c...
compiling timers.c...
compiling port.c...
assembling .\Objects\port.src...
compiling heap_1.c...
compiling main.c...
compiling putchar.c...
compiling System_init.c...
compiling io.c...
compiling can.c...
compiling STC32G_ADC.c...
Sources\Driver\src\STC32G_ADC.c(67): warning C140: '_nop_' undefined; assuming 'extern int _nop_()'
compiling STC32G_CAN.c...
compiling STC32G_Clock.c...
compiling STC32G_Compare.c...
compiling STC32G_Delay.c...
compiling STC32G_DMA.c...
compiling STC32G_EEPROM.c...
Sources\Driver\src\STC32G_EEPROM.c(47): warning C140: '_nop_' undefined; assuming 'extern int _nop_()'
compiling STC32G_Exti.c...
compiling STC32G_GPIO.c...
compiling STC32G_I2C.c...
compiling STC32G_LCM.c...
compiling STC32G_LIN.c...
compiling STC32G_NVIC.c...
compiling STC32G_PWM.c...
compiling STC32G_RTC.c...
compiling STC32G_Soft_I2C.c...
compiling STC32G_Soft_UART.c...
compiling STC32G_SPI.c...
compiling STC32G_Timer.c...
compiling STC32G_UART.c...
compiling STC32G_USART.c...
compiling STC32G_WDT.c...
compiling STC32G_ADC_Isr.c...
compiling STC32G_CAN_Isr.c...
compiling STC32G_Compare_Isr.c...
compiling STC32G_DMA_Isr.c...
compiling STC32G_Exti_Isr.c...
compiling STC32G_GPIO_Isr.c...
compiling STC32G_I2C_Isr.c...
compiling STC32G_LCM_Isr.c...
compiling STC32G_LIN_Isr.c...
compiling STC32G_PWM_Isr.c...
compiling STC32G_RTC_Isr.c...
compiling STC32G_SPI_Isr.c...
compiling STC32G_Timer_Isr.c...
compiling STC32G_UART_Isr.c...
compiling canfestival_can.c...
compiling canfestival_timer.c...
compiling dcf.c...
compiling emcy.c...
compiling lifegrd.c...
compiling lss.c...
compiling nmtMaster.c...
compiling nmtSlave.c...
compiling objacces.c...
Sources\CANOpen\src\objacces.c(143): warning C188: 'parameter 3': value truncated
Sources\CANOpen\src\objacces.c(225): warning C188: 'parameter 3': value truncated
compiling pdo.c...
Sources\CANOpen\src\pdo.c(263): warning C188: 'parameter 3': value truncated
compiling sdo.c...
compiling states.c...
compiling sync.c...
compiling timer.c...
compiling ObjDict.c...
linking...
L251 LINKER/LOCATER V4.66.93.0 - SN: Eval Version
COPYRIGHT ARM Germany GmbH 1995 - 2018
@.\Objects\FREERT~1.LNP ".\Objects\croutine.obj",
".\Objects\event_groups.obj",
".\Objects\list.obj",
".\Objects\queue.obj",
".\Objects\stream_buffer.obj",
".\Objects\tasks.obj",
".\Objects\timers.obj",
".\Objects\port.obj",
".\Objects\heap_1.obj",
".\Objects\main.obj",
".\Objects\putchar.obj",
".\Objects\System_init.obj",
".\Objects\io.obj",
".\Objects\can.obj",
".\Objects\STC32G_ADC.obj",
".\Objects\STC32G_CAN.obj",
".\Objects\STC32G_Clock.obj",
".\Objects\STC32G_Compare.obj",
".\Objects\STC32G_Delay.obj",
".\Objects\STC32G_DMA.obj",
".\Objects\STC32G_EEPROM.obj",
".\Objects\STC32G_Exti.obj",
".\Objects\STC32G_GPIO.obj",
".\Objects\STC32G_I2C.obj",
".\Objects\STC32G_LCM.obj",
".\Objects\STC32G_LIN.obj",
".\Objects\STC32G_NVIC.obj",
".\Objects\STC32G_PWM.obj",
".\Objects\STC32G_RTC.obj",
".\Objects\STC32G_Soft_I2C.obj",
".\Objects\STC32G_Soft_UART.obj",
".\Objects\STC32G_SPI.obj",
".\Objects\STC32G_Timer.obj",
".\Objects\STC32G_UART.obj",
".\Objects\STC32G_USART.obj",
".\Objects\STC32G_WDT.obj",
".\Objects\STC32G_ADC_Isr.obj",
".\Objects\STC32G_CAN_Isr.obj",
".\Objects\STC32G_Compare_Isr.obj",
".\Objects\STC32G_DMA_Isr.obj",
".\Objects\STC32G_Exti_Isr.obj",
".\Objects\STC32G_GPIO_Isr.obj",
".\Objects\STC32G_I2C_Isr.obj",
".\Objects\STC32G_LCM_Isr.obj",
".\Objects\STC32G_LIN_Isr.obj",
".\Objects\STC32G_PWM_Isr.obj",
".\Objects\STC32G_RTC_Isr.obj",
".\Objects\STC32G_SPI_Isr.obj",
".\Objects\STC32G_Timer_Isr.obj",
".\Objects\STC32G_UART_Isr.obj",
".\Objects\canfestival_can.obj",
".\Objects\canfestival_timer.obj",
".\Objects\dcf.obj",
".\Objects\emcy.obj",
".\Objects\lifegrd.obj",
".\Objects\lss.obj",
".\Objects\nmtMaster.obj",
".\Objects\nmtSlave.obj",
".\Objects\objacces.obj",
".\Objects\pdo.obj",
".\Objects\sdo.obj",
".\Objects\states.obj",
".\Objects\sync.obj",
".\Objects\timer.obj",
".\Objects\ObjDict.obj"
TO ".\Objects\FreeRTOS_Demo"
PRINT(".\Listings\FreeRTOS_Demo.map") CASE DISABLEWARNING (16, 57)
REMOVEUNUSED
CLASSES (EDATA (0x0-0xFFF),
HDATA (0x0-0xFFF))
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _nop_?_
    MODULE:  .\Objects\STC32G_ADC.obj (STC32G_ADC)
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _nop_?_
    MODULE:  .\Objects\STC32G_EEPROM.obj (STC32G_EEPROM)
******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 1844H BYTE (3503%) *
******************************************************************************
Program Size: data=14.4 edata+hdata=3832 xdata=2791 const=4040 code=43502
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _nop_?_
    MODULE:  .\Objects\STC32G_ADC.obj (STC32G_ADC)
*** ERROR L127: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _nop_?_
    MODULE:  .\Objects\STC32G_EEPROM.obj (STC32G_EEPROM)
*** ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
    LIMIT:   0800H BYTES
Target not created.
Build Time Elapsed:  00:00:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-10-12 13:15:31 | 显示全部楼层
STC32G库函数例程包、STC32G实验箱例程包里面的CAN总线收发例子都可以参考。
要保证收发节点的波特率是一致的。
截图202310121313518193.jpg
另外你用的编译器没有注册,试用版有2K的代码限制。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2023-12-13 10:49:56

4

主题

7

回帖

54

积分

注册会员

积分
54
发表于 2023-10-14 15:42:34 | 显示全部楼层
库函数例程都是C语言的我无法使用,我的主程序是用汇编写的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2023-12-13 10:49:56

4

主题

7

回帖

54

积分

注册会员

积分
54
发表于 2023-10-14 15:48:20 | 显示全部楼层
我用标准帧改扩展帧,出现最后一个数据变成EF或者AF不知道什么原因?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-10-25 18:06:56 | 显示全部楼层
CAN总线标准帧扩展帧收发例子-C语言与汇编
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4762
使用汇编语言进行CAN总线通信开发,可以参考上面这个帖子的例子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-10-25 18:09:08 | 显示全部楼层
47792*** 发表于 2023-10-12 12:10
运行官方例程出现下列问题Rebuild target 'FreeRTOS_STC32G_Demo'
compiling croutine.c...
compiling even ...

出现下面这个错误提示,说明你的编译器没有注册或者注册码过期。

******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 1844H BYTE (3503%) *
******************************************************************************

Keil试用版有2K(0800H)的代码量限制,代码超过2K的需要注册后才能正常编译。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:44 , Processed in 0.177624 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表