dlt645.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef _DLT645_H
  2. #define _DLT645_H
  3. #include "stm32f2xx.h"
  4. #include <stdint.h>
  5. #include "FreeRTOS.h"
  6. #include "task.h"
  7. #define DL645_MAX_READ_LEN 200 //读数据的最大数据长度
  8. #define DL645_MAX_WRITE_LEN 50 //写数据的最大数据长度
  9. // port setting
  10. #define DLT645_DEFAULT_RESPONSE_TIMEOUT 500 //500ms
  11. #define MAX_DEVICE_NAME_LEN 10 //最大设备名长度
  12. #define dlt_malloc malloc
  13. #define dlt_free free
  14. #define gettick() ( xTaskGetTickCount() )
  15. //DLT645 环境结构体
  16. typedef struct dlt645
  17. {
  18. uint8_t addr[6]; //从机地址
  19. uint8_t debug; //调试标志
  20. int (*write)(struct dlt645 *ctx, uint8_t *buf, uint16_t len); //底层写函数
  21. int (*read) (struct dlt645 *ctx, uint8_t *msg, uint16_t len); //底层读函数
  22. void *port_data; //移植层拓展接口
  23. } dlt645_t;
  24. typedef enum
  25. {
  26. DLT645_2007 = 1,
  27. DLT645_1997
  28. } dlt645_protocal;
  29. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  30. #define DLT_RXSIZE 200
  31. // DLT645采集使用的串口名
  32. #define DLT645_USART USART_485
  33. #define DLT645_CTRL_GPIO USART_485_DE_GPIO_PORT
  34. #define DLT645_CTRL_PIN USART_485_DE_PIN
  35. // DL/T 645硬件拓展结构体
  36. typedef struct
  37. {
  38. uint8_t dlt645_Tx; // 用于串口接收的状态
  39. uint32_t timeout; //
  40. uint8_t rxBuf[DLT_RXSIZE];
  41. uint8_t done;
  42. uint8_t index;
  43. } dlt645_port_t;
  44. extern dlt645_port_t dlt645_port;
  45. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  46. //设置从机地址
  47. extern void dlt645_set_addr(dlt645_t *ctx, uint8_t *addr);
  48. //设置调试开关
  49. extern int dlt645_set_debug(dlt645_t *ctx, int flag);
  50. //数据采集
  51. extern int dlt645_read_data(dlt645_t *ctx, uint32_t code, uint8_t *read_data, dlt645_protocal protocal);
  52. //十进制转BCD码(32位)
  53. extern uint32_t dec_to_bcd(uint32_t val);
  54. //字符串转BCD形式
  55. extern int str_to_bcd(char *str, uint8_t *bcd_store_address, uint16_t bcd_len);
  56. extern void dlt645_init(uint32_t timeout);
  57. extern void dlt_callback(UART_HandleTypeDef *husart);
  58. #endif