# IO_OLED
**Repository Path**: jianqiangxue/io_oled
## Basic Information
- **Project Name**: IO_OLED
- **Description**: ls_sdk_io_oled
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-07-27
- **Last Updated**: 2023-08-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 项目环境
1. keil5.36 AC6 -Os ARM.CMSIS.5.8.0.pack RTX5
# 注意事项
【注意】 CMSIS版本不能低于5.8.0,否则程序将不正常运行。 ARM.CMSIS.5.8.0.pack
5.8.0更新了 [GCC LinkerDescription,GCC 汇编程序启动] [为工具链 ARM、GCC 添加了 ARMv8-M 堆栈密封(到链接器、启动)]
1. printf 函数尽量不要使用,可以换LOGD()。因为ATCMD也使用UART0,容易导致硬件抢占。LOGD是入队使用,不会造成冲突。
(printf 不可以在串口中断使用。 本项目printf用于HardFault_Handler(),回溯SP地址。)
# 待完成工作
0. 设计io支持功能 -OK
1. 按键外部中断、SWO功能 -OK
2. ADC周期采集 -OK
3. PWM(周期方波/呼吸) -OK
4. IIC 主机 OLED --todo
5. SPI 主机 WS
6. WS2812控制
8. app_main低功耗设计,指令(复位,恢复出厂设置,进入低功耗模式)
9. 上位机完成IO、ADC、PWM、AT指令功能 -- ok
14. 串口AT指令(主机版)蓝牙模块
15. IIC 从机 ,用于IO模块使用
16. SPI 从机,用于IO模块使用
20. 矩阵扫描
21. 编码器
22. 加速度传感器
23. 超声波测距
24. 舵机
26. 心率传感器
# [项目结构]
# [FLASH结构]
CX32L003 64 KB Flash, 4 KB RAM
0x10000 0x2000
|名称 | 地址 | 大小(字节)
|--|--|--|
Boot| 0x0000 | 0x2000
APP| 0x2000 | 0x10000 - boot_size - KV_size = 0xE000
KV| 0xFA00 | 0x600
END| 0x10000 |
boot+app addr: 0x0
## 带uart的DFU文件地址:
start size
0x2000 0xD600 - KV_size = 0xE000
## 不带DFU功能:
start size
0x1400 0xEC00 - KV_size = 0xE600
## KV键值管理
3*512=1536 = 0x600
# 解锁芯片:
1. chip uid val AABB
2. 将 AABB取反得BBAA,再将BBAA通过CRC16计算,得到检验值。
3. AT^LOCK=校验值,完成解锁。如果输入任意值,将锁定芯片烧录。