利用m0改造循迹模块处理笔记00
用g3507芯片,处理循迹,用adc读取,用gpio输出,目标是16个通道ADC。
一、技术目标:
1、检测16个输入模拟量通道,用内置的adc进行转换,这里得到17个通道。
2、人机交互:
4个LED状态指示那个通道;
一个LED指示是标定模式,还是常规模式,标定模式LED点亮,常规模式LED熄灭。
6个按键调节标定值;
2个引脚,软件i2c显示OLED屏幕;
2个软件,软件i2c,和at24c02进行交互,将标定结果保存;
3、输出:
17个IO输出;
一个串口输出;
一个I2C输出;
一个spi输出;
1个定时器作为程序节拍。
二、步骤
上电。
如果需要调节,上电5秒内长按K1,进入调节模式,如果不需要调节,那么5秒过后自动调用at24c02的数据作为标定比较值。5秒之内,OLED显示倒计时,4个闪烁灯短闪烁,提示等待选择;
OLED显示16个通道的adc值。
12864
128/8=16
1234567890123456
xxx yyy xxx yyy,4个通道,每行显示4个通道,4行显示16个通道。
再加一行,显示模式,是标定模式,还是使用模式,按键adc通道。
标定模式-通道-当前adc-标定ADC
A(B)-X(0-F)-YYY-ZZZ
如果是标定模式。没有OLED的情况下,用5个LED,显示那个通道。
按键功能
K1:长按一次,进入标定模式,标定模式下,长按第二次,退出标定模式;
K2: 在标定模式下,选择通道;按下n次,选择通道0-15;用4个LED指示通道。
硬件设计上,0代表点亮,1代表熄灭;
0000---------ADC0
0001---------ADC1
0010---------ADC2
0011---------ADC3
0100---------ADC4
0101--------ADC5
…
K3: 在标定模式下,按下一次,对选定通道,数据+1,数据范围看adc的位数,如果是8位adc,那么数据范围0-255。长按,数据连续-
设置adc精度是8位,数据是0-255范围内;
K4:在标定模式下,按下一次,对选定通道,数据-1,或者减1,数据范围0-255;
长按,数据连续-,
K5:长按,保存数据到at24c02;需要长按才能保存,防止误操作;同时退出标定模式。
K6:长按,不保存数据;同时退出标定模式。
配置
- GPIOA:
- Open-Drain Output: PA0
- Open-Drain Output: PA1
- High-Drive Output: PA28
- Standard Output: PA29
- Standard Output: PA30
- High-Drive Output: PA31
- Standard Output: PA3
- Standard Output: PA4
- Standard Output: PA6
- Standard Output: PA7
- Standard Output: PA8
- High-Speed Output: PA9
- GPIOB:
- Standard Input with internal pull-up: PB21
- Standard Output: PB13
- Standard Output: PB14
- Standard Output: PB15---------------------------------16个LED
- Standard Output: PB16-------------------------LED模式,点亮标定,熄灭常规模式
- Standard Output: PB22
- Standard Output: PB23
- Standard Output: PB26
- Standard Output: PB27-------------------LED通道指示
- Standard Output: PB0
- Standard Output: PB1
- Standard Output: PB4
- Standard Output: PB5
- Standard Output: PB6
- Standard Output: PB7-------------------------按键6个
- Standard Output: PB8
- Standard Output: PB9------------------------OLED
- Standard Output: PB10
- Standard Output: PB11----------------------AT24C02
- Standard Output: PB12----------------------预留
- SYSCTL
- TIMA0
- I2C1:
- I2C Serial Data line (SDA): PB3
- I2C Serial Clock line (SCL): PB2
- UART0:
- RX Pin: PA11
- TX Pin: PA10
- SPI0:
- SPI SCLK (Clock): PA12
- SPI PICO (Peripheral In, Controller Out): PA5
- SPI POCI (Peripheral Out, Controller In): PA13
- SPI CS0 (Chip Select 0): PA2
- ADC0:
- ADC12 Channel 0 Pin: PA27
- ADC12 Channel 1 Pin: PA26
- ADC12 Channel 2 Pin: PA25
- ADC12 Channel 3 Pin: PA24
- ADC12 Channel 4 Pin: PB25
- ADC12 Channel 5 Pin: PB24
- ADC12 Channel 6 Pin: PB20
- ADC12 Channel 7 Pin: PA22
- ADC12 Channel 8 Pin: PA21
- ADC12 Channel 12 Pin: PA14
- ADC1:
- ADC12 Channel 0 Pin: PA15
- ADC12 Channel 1 Pin: PA16
- ADC12 Channel 2 Pin: PA17
- ADC12 Channel 3 Pin: PA18----------------BSL,BOOT
- ADC12 Channel 4 Pin: PB17
- ADC12 Channel 5 Pin: PB18
- ADC12 Channel 6 Pin: PB19
- VREF:
- VREF Positive (VREF+): PA23
- EVENT
- MATHACL
- BOARD:
- Debug Clock: PA20-------------------SWCLK
- Debug Data In Out: PA19------------SWDIO