Go to file
ThinkPad-T460P 2e42c6ddbf Update README.md 2021-03-16 18:56:25 +08:00
.settings update 2021-03-11 19:09:05 +08:00
.vscode update 2021-03-10 12:03:49 +08:00
App change uart sender to blocking mode, not dma 2021-03-16 18:52:01 +08:00
Core change uart sender to blocking mode, not dma 2021-03-16 18:52:01 +08:00
Drivers update code date about stm 2021-01-06 11:37:19 +08:00
Middlewares change uart sender to blocking mode, not dma 2021-03-16 18:52:01 +08:00
USB_DEVICE update 2021-03-11 19:09:05 +08:00
Utils/CPU update 2021-03-14 23:24:59 +08:00
.cproject update 2021-03-14 23:24:59 +08:00
.gitattributes Initial commit 2020-02-20 11:39:38 +08:00
.gitignore V0.9.1 beta 2020-12-17 18:22:19 +08:00
.gitmodules update 2021-03-11 19:09:05 +08:00
.mxproject update 2021-03-11 19:09:05 +08:00
.project update to hal1.8.3 2020-12-16 12:02:47 +08:00
NaviKit_EC_stm32 Debug.launch change uart sender to blocking mode, not dma 2021-03-16 18:52:01 +08:00
NaviKit_EC_stm32 Release.launch change uart sender to blocking mode, not dma 2021-03-16 18:52:01 +08:00
NaviKit_EC_stm32.ioc update 2021-03-14 23:24:59 +08:00
README.md Update README.md 2021-03-16 18:56:25 +08:00
STM32F107VCTX_FLASH.ld update 2021-03-11 19:09:05 +08:00

README.md

NaviKit_stm32

PM1导航套件中电源控制板源码STM32F107VCT6开发环境STM32CubeIDE

特性

1.电池管理统计功能基于IIC协议的库仑计

2.负载的启动顺序编辑和软件改变/查询负载状态

3.电源监控功能(多轨电源电压监控)

串口通信协议

  • 在jetson nano系统中找到串口ACM发送数值0-11即可通过硬件重启12个usb口对应的设备

STM32作为CDC Device接入到USB2.0-HUB的Downsteam 7端口下

  • 负载开关部分

    位置 字节0 字节1 字节2 字节3 字节4 字节5 字节6 字节7
    功能 帧头 读写 指令
    示例 0xA5 0x80 读
    0x81 写
    0x7f 返回
  • 电池管理部分

Note

  • 官方的HAL中USB库已知问题 在使用usb的时候 文件stm32f1xx_hal_pcd.c 函数void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) 代码段HAL_PCD_SuspendCallback(hpcd); 务必屏蔽,否则导致枚举失败,提示获取设备描述符失败。

  • FreeRTOS调试指南

    • 莫名进入HardFault错误
      • 一般是堆栈大小不足导致,可通过Static Stack Analyzer中的Call graph来分析每个任务所占用的栈大小(并且以大纲视图看出任务中占用栈较大的函数),从而修改每个任务的stack_size为合适大小
      • elog_output()该函数占用栈大小为400字节如果有任务调用了该日志输出接口那么freertos的默认128*4=512字节显然非常容易溢出

维护指南

  • 为提高可移植性、可维护性、可阅读性,开发(应用层)时尽量使用CMSIS_OS2的抽象接口特殊情况时再考虑使用RTOS的原生接口
  • freertos.c中的任务实体只保留默认任务, 其他线程任务实例、属性、句柄的声明及定义,独立存放在App文件夹
  • 线程、定时器、事件标志、互斥锁、信号量、消息队列等功能的初始化统一在freertos.c文件中进行初始化(内核启动前的预装载)

日志接口

  • 串口输出口波特率为56000bps
  • 日志输出支持CSI颜色模式
  • 由于elog中使用了操作系统的信号量对临界资源(日志缓冲区)进行读写保护,所以只能在任务中调用日志接口,请勿在中断中调用日志接口。
  • 日志含义:等级/标签 [时间戳] (优先级) 线程 (文件路径 方法: 行数) 消息内容

勘误

硬件的v1.0以前版本中SYS_RESET脚和MOD_SLEEP到单片机的实际连接与网络标号是相反的问题发生在TXB0108PWR芯片附近故代码中在GPIO处进行了相反的设置。