Просмотр исходного кода

feat:can模块中添加iso15765,待使用对端can设备调试

yykai95 3 лет назад
Родитель
Сommit
c9e7d26651

+ 7 - 0
BleCanBoxCode/STM32F103RCT6/MOD/Src/mod_atcmd.c

@@ -44,6 +44,13 @@ void MOD_AtCmdDataProcess(void *data, uint16_t length)
         DLOG_I("send data to can");
         HAL_CanTxData(0, can_id, send_buf, 8);
     }
+    else if (!strncmp(tmp_buf, "AT+ISOTX", strlen("AT+ISOTX")))
+    {
+        uint32_t can_id = 0x6F1;
+        uint8_t send_buf[] = {0x72,0x42,0x76,0x65,0x45,0x6d,0x47,0x6e,0x46,0x75,0x79,0x75,0x72,0x6e};
+        DLOG_I("iso15765 tx");
+        MOD_CanTransferData(send_buf, sizeof(send_buf));
+    }
     else if (!strncmp(tmp_buf, "AT+REBOOT", strlen("AT+REBOOT")))
     {
         Sys_Soft_Reset();

+ 26 - 25
BleCanBoxCode/STM32F103RCT6/MOD/Src/mod_candataprocess.c

@@ -38,7 +38,7 @@ static void on_error(n_rslt err_type)
 
 static uint8_t send_frame_via_can(cbus_id_type id_type, uint32_t id, cbus_fr_format fr_fmt, uint8_t dlc, uint8_t *dt)
 {
-    //将数据通过can发送至对端设备.
+    //iso15765涓璫an鍙戦€佹帴鍙�
     uint8_t can_id_type = 0;
     uint32_t can_id = 0;
     uint8_t payload_len = 0;
@@ -50,7 +50,7 @@ static uint8_t send_frame_via_can(cbus_id_type id_type, uint32_t id, cbus_fr_for
     payload_len = dlc>8?8:dlc;
     memset(payload, 0, 8);
     memcpy(payload, dt, payload_len);
-    DLOG_I("send can data:%d,data:%d", payload_len, SYS_Hex2str(payload, payload_len));
+    DLOG_I("send can data:%d,data:%s", payload_len, SYS_Hex2str(payload, payload_len));
 
     ret = HAL_CanTxData(can_id_type, can_id, payload, payload_len);
     return 0;
@@ -169,7 +169,7 @@ HANDLER_T data_process_handler_list[] = {
 
 int MOD_CanIso15765ParseInit(void)
 {
-    //初始化15765解析句柄.
+    //鍒濆�鍖杋so15765瑙f瀽鍙ユ焺.
     int init_ret = N_OK;
     for (int i=0; i<sizeof(data_process_handler_list)/sizeof(HANDLER_T); i++)
     {
@@ -185,7 +185,7 @@ int MOD_CanIso15765ParseInit(void)
 
 void MOD_CanIso15765Parse(void)
 {
-    //处理队列中的数据.
+    //澶勭悊闃熷垪涓�殑鏁版嵁
     for (int i=0; i<sizeof(data_process_handler_list)/sizeof(HANDLER_T); i++)
     {
         iso15765_process(data_process_handler_list[i].process_handler);
@@ -194,29 +194,29 @@ void MOD_CanIso15765Parse(void)
 
 void MOD_CanPutDataToIso15765Parse(uint8_t* can_data, uint8_t data_len)
 {
-    //将can数据放入15765处理队列接口
+    //灏哻an鏁版嵁鏀惧叆15765澶勭悊闃熷垪鎺ュ彛
     uint32_t can_id;
     canbus_frame_t can_frame;
     memcpy(&can_id, &can_data[1], 4);
 
-    can_frame.id = can_id; //帧id
-    can_frame.fr_format = CBUS_FR_FRM_STD; //帧格式
-    can_frame.id_type = CBUS_ID_T_STANDARD; //帧类型
-    can_frame.dlc = can_data[5]; //帧长度
+    can_frame.id = can_id; //帧甯�d
+    can_frame.fr_format = CBUS_FR_FRM_STD; //帧甯ф牸寮�
+    can_frame.id_type = CBUS_ID_T_STANDARD; //帧甯х被鍨�
+    can_frame.dlc = can_data[5]; //帧甯ч暱搴�
 
     memset(&can_frame.dt, 0, 8);
-    memcpy(&can_frame.dt, &can_data[6], can_frame.dlc); //帧数据
+    memcpy(&can_frame.dt, &can_data[6], can_frame.dlc); //帧甯ф暟鎹�
 
     DLOG_I("put can to 15765 parse,can_id:0x%x,payload_len:%d,payload:%s",
                 can_id,
                 can_frame.dlc ,
                 SYS_Hex2str(can_frame.dt, can_frame.dlc));
 
-    // //开始往队列中放入.
+    // //寮€濮嬪線闃熷垪涓�斁鍏ユ暟鎹�
     // uint8_t find_frame_id_flag = 0;
     // for(int i=0; i<sizeof(data_process_handler_list)/sizeof(HANDLER_T); i++)
     // {
-    //     //先找下这个id有没有在这个列表里面.如果在的话就放进去,如果不在的话,就重新找新的放入.
+    //     //鍏堟壘涓嬭繖涓猧d鏈夋病鏈夊湪鍒楄〃閲岄潰,濡傛灉鍦ㄧ殑璇濆氨鏀捐繘鍘�,濡傛灉涓嶅湪鐨勮瘽灏遍噸鏂版壘鏂扮殑鏀惧叆
     //     if(data_process_handler_list[i].frame_id == can_frame.id)
     //     {
     //         LOG_D("find frame_id");
@@ -226,7 +226,7 @@ void MOD_CanPutDataToIso15765Parse(uint8_t* can_data, uint8_t data_len)
     // }
     // if(0 == find_frame_id_flag)
     // {
-    //     //这个frame_id不在之前发过的历史列表里面,那找个新的放进去.
+    //     //杩欎釜frame_id涓嶅湪涔嬪墠鍙戣繃鐨勫巻鍙插垪琛ㄩ噷闈�,閭f壘涓�柊鐨勬斁杩涘幓
     //     for(int j=0; j<sizeof(data_process_handler_list)/sizeof(HANDLER_T); j++)
     //     {
     //         if(UINT32_DEFAULT_VAL == data_process_handler_list[j].frame_id)
@@ -244,10 +244,10 @@ void MOD_CanPutDataToIso15765Parse(uint8_t* can_data, uint8_t data_len)
 
 
 /**********************************************
-*  @brief:   can发送接口
-*  @param:   data:指向要发送的数据组包buf
-*  @param:   len:数据长度
-*  @return:  发送结果
+*  @brief:   can鍙戦€佹帴鍙�
+*  @param:   data:鎸囧悜瑕佸彂閫佺殑鏁版嵁缁勫寘buf
+*  @param:   len:鏁版嵁闀垮害
+*  @return:  鍙戦€佺粨鏋�
 *  @warning: xxxxxxx
 *  1.
 **********************************************/
@@ -270,19 +270,20 @@ int MOD_CanTransferData(uint8_t* data, uint8_t len)
     //                             SYS_Hex2str(payload, payload_len));
     // return HAL_CanTxData(can_id_type, can_id, payload, payload_len);
 
-    //iso15765库
-    uint8_t tx_len = len>I15765_MSG_SIZE?I15765_MSG_SIZE:len;
+    // iso15765搴�
+    g_s_can_frame.msg_sz = len>I15765_MSG_SIZE?I15765_MSG_SIZE:len;
     memset(&g_s_can_frame.msg, 0, I15765_MSG_SIZE);
-    memcpy(&g_s_can_frame.msg, data, tx_len);
-    DLOG_I("send can data to iso15765,size:%d,data:%d", tx_len, SYS_Hex2str(g_s_can_frame.msg, tx_len));
+    memcpy(&g_s_can_frame.msg, data, g_s_can_frame.msg_sz);
+    
+    DLOG_I("send can data to iso15765,size:%d,data:%S", g_s_can_frame.msg_sz, SYS_Hex2str(g_s_can_frame.msg, g_s_can_frame.msg_sz));
 
-    iso15765_send(&handler1, &g_s_can_frame); //使用这个接口将数据发送给协议库
+    iso15765_send(&handler1, &g_s_can_frame); //浣跨敤杩欎釜鎺ュ彛灏嗘暟鎹�彂閫佸埌鍗忚�搴�
 }
 
 /**********************************************
-*  @brief:   can接收接口,处理接收到的can数据
-*  @param:   data:接收到的数据缓存空间
-*  @param:   data_len:收到的数据长度
+*  @brief:   can鎺ユ敹鎺ュ彛,澶勭悊鎺ユ敹鍒扮殑can鏁版嵁
+*  @param:   data:鎺ユ敹鍒扮殑鏁版嵁缂撳瓨绌洪棿
+*  @param:   data_len:鏀跺埌鐨勬暟鎹�暱搴�
 *  @return:  xxxxxxx
 *  @warning: xxxxxxx
 *  1.

+ 4 - 4
BleCanBoxCode/STM32F103RCT6/Middle/iso15765-canbus-master/src/lib_iso15765.h

@@ -114,10 +114,10 @@ typedef enum
 
 typedef enum
 {
-    N_PCI_T_SF = 0x00U, /* Single Frame 痋*/
-    N_PCI_T_FF = 0x01U, /* First Frame 痋*/
-    N_PCI_T_CF = 0x02U, /* Consecutive Frame 蟀哿痋*/
-    N_PCI_T_FC = 0x03U, /* Flow Control Frame 霜諷痋*/
+    N_PCI_T_SF = 0x00U, /* Single Frame 嚙踝蕭痋*/
+    N_PCI_T_FF = 0x01U, /* First Frame 嚙踝蕭痋*/
+    N_PCI_T_CF = 0x02U, /* Consecutive Frame 嚙踝蕭嚙踝蕭痋*/
+    N_PCI_T_FC = 0x03U, /* Flow Control Frame 嚙踝蕭嚙踝蕭痋*/
     N_PCI_T_UN = 0xFF   /* Unknown */
 } pci_type;