Motion_EC_Stm32_archived/README.md

59 lines
3.1 KiB
Markdown
Raw Normal View History

2020-04-30 10:15:46 +08:00
<!--
* @Description: file content
* @Author: CK.Zh
* @Date: 2020-02-20 11:39:38
* @LastEditors: CK.Zh
2021-03-11 19:09:05 +08:00
* @LastEditTime: 2021-03-10 13:48:33
2020-04-30 10:15:46 +08:00
-->
2020-02-20 11:39:38 +08:00
# NaviKit_stm32
2020-04-16 20:05:03 +08:00
PM1导航套件中电源控制板源码STM32F107VCT6开发环境STM32CubeIDE
2020-04-30 10:15:46 +08:00
# 特性
2020-04-16 20:05:03 +08:00
2020-04-30 10:15:46 +08:00
## 1.电池管理统计功能基于IIC协议的库仑计
## 2.负载的启动顺序编辑和软件改变/查询负载状态
2020-08-21 18:13:24 +08:00
## 3.电源监控功能(多轨电源电压监控)
2020-04-30 10:15:46 +08:00
# 串口通信协议
* 在jetson nano系统中找到串口ACM发送数值0-11即可通过硬件重启12个usb口对应的设备
2020-04-30 10:15:46 +08:00
`STM32作为CDC Device接入到USB2.0-HUB的Downsteam 7端口下`
* 负载开关部分
| 位置 | 字节0 | 字节1 | 字节2 | 字节3 | 字节4 | 字节5 | 字节6 | 字节7 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 功能 | 帧头 | 读写 | 指令 |
| 示例 | 0xA5 | 0x80 读 </br> 0x81 写 </br> 0x7f 返回 |
* 电池管理部分
2020-04-14 17:28:14 +08:00
# Note
2021-03-12 13:38:28 +08:00
* 官方的HAL中USB库已知问题
2020-04-14 17:28:14 +08:00
在使用usb的时候
2021-03-10 12:03:49 +08:00
文件`stm32f1xx_hal_pcd.c`
函数`void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)`
代码段`HAL_PCD_SuspendCallback(hpcd); ` 务必屏蔽,否则导致枚举失败,提示获取设备描述符失败。
2020-08-21 18:13:24 +08:00
2021-03-12 13:38:28 +08:00
* FreeRTOS调试指南
* 莫名进入`HardFault`错误
* 一般是堆栈大小不足导致,可通过`Static Stack Analyzer`中的`Call graph`来分析每个任务所占用的栈大小(并且以大纲视图看出任务中占用栈较大的函数),从而修改每个任务的`stack_size`为合适大小
* 如`elog_output()`该函数占用栈大小为400字节如果有任务调用了该日志输出接口那么freertos的默认`128*4=512`字节显然非常容易溢出
2021-01-07 19:01:08 +08:00
2021-03-10 12:03:49 +08:00
# 维护指南
* 为提高可移植性、可维护性、可阅读性,开发(应用层)时尽量使用`CMSIS_OS2`的抽象接口特殊情况时再考虑使用RTOS的原生接口
2021-03-11 19:09:05 +08:00
* `freertos.c`中的任务实体只保留默认任务, 其他线程任务实例、属性、句柄的声明及定义,独立存放在`App`文件夹
2021-03-10 12:03:49 +08:00
* 线程、定时器、事件标志、互斥锁、信号量、消息队列等功能的初始化统一在`freertos.c`文件中进行初始化(内核启动前的预装载)
2021-03-11 19:09:05 +08:00
# 日志接口
2021-03-19 11:06:06 +08:00
* 串口输出(日志)波特率为 ~~56000bps~~ `115200bps`
2021-03-11 19:09:05 +08:00
* 日志输出支持`CSI`颜色模式
2021-03-15 19:26:10 +08:00
* 由于`elog`中使用了操作系统的信号量对临界资源(日志缓冲区)进行读写保护,所以只能在任务中调用日志接口,请勿在中断中调用日志接口。
2021-03-19 11:06:06 +08:00
* 日志含义:
* DEBUG: `等级`/`标签` [`时间戳`] (`优先级`) `线程` (`文件路径` `方法`: `行数`) `消息内容`
* RELEASE: `等级`/ [`时间戳`] `消息内容`
2021-03-11 19:09:05 +08:00
2021-01-07 19:01:08 +08:00
# 勘误
2021-03-22 17:18:09 +08:00
硬件的v1.0以前版本中SYS_RESET脚和MOD_SLEEP到单片机的实际连接与网络标号是相反的问题发生在TXB0108PWR芯片附近故代码中在GPIO处进行了相反的设置。
在硬件1.0以后的版本中原理图net名问题已经修复。
无论哪个硬件版本som的reset脚始终连接在PB5,som的sleep脚始终连接在PB4。