diff options
Diffstat (limited to 'docs/adc_driver.md')
-rw-r--r-- | docs/adc_driver.md | 154 |
1 files changed, 80 insertions, 74 deletions
diff --git a/docs/adc_driver.md b/docs/adc_driver.md index 6e3d51386..69fff4b3c 100644 --- a/docs/adc_driver.md +++ b/docs/adc_driver.md | |||
@@ -47,73 +47,79 @@ Note that some of these pins are doubled-up on ADCs with the same channel. This | |||
47 | 47 | ||
48 | Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation. | 48 | Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the `ADCv1` implementation of the ADC, whereas the F3 uses the `ADCv3` implementation. |
49 | 49 | ||
50 | |ADC|Channel|STM32F0xx|STM32F3xx| | 50 | |ADC|Channel|STM32F0xx|STM32F1xx|STM32F3xx|STM32F4xx| |
51 | |---|-------|---------|---------| | 51 | |---|-------|---------|---------|---------|---------| |
52 | |1 |0 |`A0` | | | 52 | |1 |0 |`A0` |`A0` | |`A0` | |
53 | |1 |1 |`A1` |`A0` | | 53 | |1 |1 |`A1` |`A1` |`A0` |`A1` | |
54 | |1 |2 |`A2` |`A1` | | 54 | |1 |2 |`A2` |`A2` |`A1` |`A2` | |
55 | |1 |3 |`A3` |`A2` | | 55 | |1 |3 |`A3` |`A3` |`A2` |`A3` | |
56 | |1 |4 |`A4` |`A3` | | 56 | |1 |4 |`A4` |`A4` |`A3` |`A4` | |
57 | |1 |5 |`A5` |`F4` | | 57 | |1 |5 |`A5` |`A5` |`F4` |`A5` | |
58 | |1 |6 |`A6` |`C0` | | 58 | |1 |6 |`A6` |`A6` |`C0` |`A6` | |
59 | |1 |7 |`A7` |`C1` | | 59 | |1 |7 |`A7` |`A7` |`C1` |`A7` | |
60 | |1 |8 |`B0` |`C2` | | 60 | |1 |8 |`B0` |`B0` |`C2` |`B0` | |
61 | |1 |9 |`B1` |`C3` | | 61 | |1 |9 |`B1` |`B1` |`C3` |`B1` | |
62 | |1 |10 |`C0` |`F2` | | 62 | |1 |10 |`C0` |`C0` |`F2` |`C0` | |
63 | |1 |11 |`C1` | | | 63 | |1 |11 |`C1` |`C1` | |`C1` | |
64 | |1 |12 |`C2` | | | 64 | |1 |12 |`C2` |`C2` | |`C2` | |
65 | |1 |13 |`C3` | | | 65 | |1 |13 |`C3` |`C3` | |`C3` | |
66 | |1 |14 |`C4` | | | 66 | |1 |14 |`C4` |`C4` | |`C4` | |
67 | |1 |15 |`C5` | | | 67 | |1 |15 |`C5` |`C5` | |`C5` | |
68 | |1 |16 | | | | 68 | |1 |16 | | | | | |
69 | |2 |1 | |`A4` | | 69 | |2 |0 | |`A0`¹ | |`A0`² | |
70 | |2 |2 | |`A5` | | 70 | |2 |1 | |`A1`¹ |`A4` |`A1`² | |
71 | |2 |3 | |`A6` | | 71 | |2 |2 | |`A2`¹ |`A5` |`A2`² | |
72 | |2 |4 | |`A7` | | 72 | |2 |3 | |`A3`¹ |`A6` |`A3`² | |
73 | |2 |5 | |`C4` | | 73 | |2 |4 | |`A4`¹ |`A7` |`A4`² | |
74 | |2 |6 | |`C0` | | 74 | |2 |5 | |`A5`¹ |`C4` |`A5`² | |
75 | |2 |7 | |`C1` | | 75 | |2 |6 | |`A6`¹ |`C0` |`A6`² | |
76 | |2 |8 | |`C2` | | 76 | |2 |7 | |`A7`¹ |`C1` |`A7`² | |
77 | |2 |9 | |`C3` | | 77 | |2 |8 | |`B0`¹ |`C2` |`B0`² | |
78 | |2 |10 | |`F2` | | 78 | |2 |9 | |`B1`¹ |`C3` |`B1`² | |
79 | |2 |11 | |`C5` | | 79 | |2 |10 | |`C0`¹ |`F2` |`C0`² | |
80 | |2 |12 | |`B2` | | 80 | |2 |11 | |`C1`¹ |`C5` |`C1`² | |
81 | |2 |13 | | | | 81 | |2 |12 | |`C2`¹ |`B2` |`C2`² | |
82 | |2 |14 | | | | 82 | |2 |13 | |`C3`¹ | |`C3`² | |
83 | |2 |15 | | | | 83 | |2 |14 | |`C4`¹ | |`C4`² | |
84 | |2 |16 | | | | 84 | |2 |15 | |`C5`¹ | |`C5`² | |
85 | |3 |1 | |`B1` | | 85 | |2 |16 | | | | | |
86 | |3 |2 | |`E9` | | 86 | |3 |0 | |`A0`¹ | |`A0`² | |
87 | |3 |3 | |`E13` | | 87 | |3 |1 | |`A1`¹ |`B1` |`A1`² | |
88 | |3 |4 | | | | 88 | |3 |2 | |`A2`¹ |`E9` |`A2`² | |
89 | |3 |5 | | | | 89 | |3 |3 | |`A3`¹ |`E13` |`A3`² | |
90 | |3 |6 | |`E8` | | 90 | |3 |4 | |`F6`¹ | |`F6`² | |
91 | |3 |7 | |`D10` | | 91 | |3 |5 | |`F7`¹ |`B13` |`F7`² | |
92 | |3 |8 | |`D11` | | 92 | |3 |6 | |`F8`¹ |`E8` |`F8`² | |
93 | |3 |9 | |`D12` | | 93 | |3 |7 | |`F9`¹ |`D10` |`F9`² | |
94 | |3 |10 | |`D13` | | 94 | |3 |8 | |`F10`¹ |`D11` |`F10`² | |
95 | |3 |11 | |`D14` | | 95 | |3 |9 | | |`D12` |`F3`² | |
96 | |3 |12 | |`B0` | | 96 | |3 |10 | |`C0`¹ |`D13` |`C0`² | |
97 | |3 |13 | |`E7` | | 97 | |3 |11 | |`C1`¹ |`D14` |`C1`² | |
98 | |3 |14 | |`E10` | | 98 | |3 |12 | |`C2`¹ |`B0` |`C2`² | |
99 | |3 |15 | |`E11` | | 99 | |3 |13 | |`C3`¹ |`E7` |`C3`² | |
100 | |3 |16 | |`E12` | | 100 | |3 |14 | | |`E10` |`F4`² | |
101 | |4 |1 | |`E14` | | 101 | |3 |15 | | |`E11` |`F5`² | |
102 | |4 |2 | |`B12` | | 102 | |3 |16 | | |`E12` | | |
103 | |4 |3 | |`B13` | | 103 | |4 |1 | | |`E14` | | |
104 | |4 |4 | |`B14` | | 104 | |4 |2 | | |`E15` | | |
105 | |4 |5 | |`B15` | | 105 | |4 |3 | | |`B12` | | |
106 | |4 |6 | |`E8` | | 106 | |4 |4 | | |`B14` | | |
107 | |4 |7 | |`D10` | | 107 | |4 |5 | | |`B15` | | |
108 | |4 |8 | |`D11` | | 108 | |4 |6 | | |`E8` | | |
109 | |4 |9 | |`D12` | | 109 | |4 |7 | | |`D10` | | |
110 | |4 |10 | |`D13` | | 110 | |4 |8 | | |`D11` | | |
111 | |4 |11 | |`D14` | | 111 | |4 |9 | | |`D12` | | |
112 | |4 |12 | |`D8` | | 112 | |4 |10 | | |`D13` | | |
113 | |4 |13 | |`D9` | | 113 | |4 |11 | | |`D14` | | |
114 | |4 |14 | | | | 114 | |4 |12 | | |`D8` | | |
115 | |4 |15 | | | | 115 | |4 |13 | | |`D9` | | |
116 | |4 |16 | | | | 116 | |4 |14 | | | | | |
117 | |4 |15 | | | | | | ||
118 | |4 |16 | | | | | | ||
119 | |||
120 | <sup>¹ As of ChibiOS 20.3.4, the ADC driver for STM32F1xx devices supports only ADC1, therefore any configurations involving ADC2 or ADC3 cannot actually be used. In particular, pins `F6`…`F10`, which are present at least on some STM32F103x[C-G] devices, cannot be used as ADC inputs because of this driver limitation.</sup> | ||
121 | |||
122 | <sup>² Not all STM32F4xx devices have ADC2 and/or ADC3, therefore some configurations shown in this table may be unavailable; in particular, pins `F4`…`F10` cannot be used as ADC inputs on devices which do not have ADC3. Check the device datasheet to confirm which pin functions are supported.</sup> | ||
117 | 123 | ||
118 | ## Functions | 124 | ## Functions |
119 | 125 | ||
@@ -141,10 +147,10 @@ Also note that the F0 and F3 use different numbering schemes. The F0 has a singl | |||
141 | 147 | ||
142 | The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options. | 148 | The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding `hal_adc_lld.h` in ChibiOS for your specific microcontroller for further documentation on your available options. |
143 | 149 | ||
144 | |`#define` |Type |Default |Description | | 150 | |`#define` |Type |Default |Description | |
145 | |---------------------|------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 151 | |---------------------|------|----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
146 | |`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer. | | 152 | |`ADC_CIRCULAR_BUFFER`|`bool`|`false` |If `true`, then the implementation will use a circular buffer. | |
147 | |`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`. | | 153 | |`ADC_NUM_CHANNELS` |`int` |`1` |Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports `1`. | |
148 | |`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 12-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.| | 154 | |`ADC_BUFFER_DEPTH` |`int` |`2` |Sets the depth of each result. Since we are only getting a 10-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.| |
149 | |`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. | | 155 | |`ADC_SAMPLING_RATE` |`int` |`ADC_SMPR_SMP_1P5` |Sets the sampling rate of the ADC. By default, it is set to the fastest setting. | |
150 | |`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_12BIT`|The resolution of your result. We choose 12 bit by default, but you can opt for 12, 10, 8, or 6 bit. | | 156 | |`ADC_RESOLUTION` |`int` |`ADC_CFGR1_RES_10BIT` or `ADC_CFGR_RES_10BITS`|The resolution of your result. We choose 10 bit by default, but you can opt for 12, 10, 8, or 6 bit. Different MCUs use slightly different names for the resolution constants. | |