Skip to content

Commit 87637c7

Browse files
committed
Merge branch 'feature/add_spi_adc_sensor_mcp3201' into 'master'
add adc sensor: mcp3201 See merge request ae_group/esp-iot-solution!913
2 parents eaa7262 + d31f899 commit 87637c7

File tree

21 files changed

+556
-0
lines changed

21 files changed

+556
-0
lines changed

.github/workflows/upload_component.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ jobs:
6464
components/motor/esp_simplefoc;
6565
components/motor/servo;
6666
components/openai;
67+
components/sensors/adc/mcp3201;
6768
components/sensors/battery_fuel_gauge/max17048;
6869
components/sensors/power_measure;
6970
components/sensors/gesture/apds9960;

.gitlab/ci/build.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1303,6 +1303,14 @@ build_components_sensors_power_measure_test_apps:
13031303
variables:
13041304
EXAMPLE_DIR: components/sensors/power_measure/test_apps
13051305

1306+
build_components_sensors_adc_mcp3201_test_apps:
1307+
extends:
1308+
- .build_examples_template
1309+
- .rules:build:components_sensors_adc_mcp3201_test_apps
1310+
- .build_idf_active_release_version
1311+
variables:
1312+
EXAMPLE_DIR: components/sensors/adc/mcp3201/test_apps
1313+
13061314
build_components_sensors_battery_fuel_gauge_max17048_test_apps:
13071315
extends:
13081316
- .build_examples_template

.gitlab/ci/rules.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,10 @@
202202
- "components/sensors/power_measure/**/*"
203203
- "components/tools/cmake_utilities/package_manager.cmake"
204204

205+
.patterns-components_sensors_adc_mcp3201: &patterns-components_sensors_adc_mcp3201
206+
- "components/sensors/adc/mcp3201/**/*"
207+
- "tools/cmake_utilities/package_manager.cmake"
208+
205209
.patterns-components_sensors_battery_fuel_gauge_max17048: &patterns-components_sensors_battery_fuel_gauge_max17048
206210
- "components/sensors/battery_fuel_gauge/max17048/**/*"
207211
- "tools/cmake_utilities/package_manager.cmake"
@@ -2020,6 +2024,17 @@
20202024
- <<: *if-dev-push
20212025
changes: *patterns-components_openai
20222026

2027+
.rules:build:components_sensors_adc_mcp3201_test_apps:
2028+
rules:
2029+
- <<: *if-protected
2030+
- <<: *if-label-build
2031+
- <<: *if-label-target_test
2032+
- <<: *if-trigger-job
2033+
- <<: *if-dev-push
2034+
changes: *patterns-build_system
2035+
- <<: *if-dev-push
2036+
changes: *patterns-components_sensors_adc_mcp3201
2037+
20232038
.rules:build:components_sensors_battery_fuel_gauge_max17048_test_apps:
20242039
rules:
20252040
- <<: *if-protected

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ The registered components in ESP-IoT-Solution are listed below:
115115
| [lis2dh12](https://components.espressif.com/components/espressif/lis2dh12) | [![Component Registry](https://components.espressif.com/components/espressif/lis2dh12/badge.svg)](https://components.espressif.com/components/espressif/lis2dh12) |
116116
| [max17048](https://components.espressif.com/components/espressif/max17048) | [![Component Registry](https://components.espressif.com/components/espressif/max17048/badge.svg)](https://components.espressif.com/components/espressif/max17048) |
117117
| [mcp23017](https://components.espressif.com/components/espressif/mcp23017) | [![Component Registry](https://components.espressif.com/components/espressif/mcp23017/badge.svg)](https://components.espressif.com/components/espressif/mcp23017) |
118+
| [mcp3201](https://components.espressif.com/components/espressif/mcp3201) | [![Component Registry](https://components.espressif.com/components/espressif/mcp3201/badge.svg)](https://components.espressif.com/components/espressif/mcp3201) |
118119
| [mvh3004d](https://components.espressif.com/components/espressif/mvh3004d) | [![Component Registry](https://components.espressif.com/components/espressif/mvh3004d/badge.svg)](https://components.espressif.com/components/espressif/mvh3004d) |
119120
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver) | [![Component Registry](https://components.espressif.com/components/espressif/ntc_driver/badge.svg)](https://components.espressif.com/components/espressif/ntc_driver) |
120121
| [openai](https://components.espressif.com/components/espressif/openai) | [![Component Registry](https://components.espressif.com/components/espressif/openai/badge.svg)](https://components.espressif.com/components/espressif/openai) |

README_CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ ESP-IoT-Solution 中注册的组件如下:
115115
| [lis2dh12](https://components.espressif.com/components/espressif/lis2dh12) | [![Component Registry](https://components.espressif.com/components/espressif/lis2dh12/badge.svg)](https://components.espressif.com/components/espressif/lis2dh12) |
116116
| [max17048](https://components.espressif.com/components/espressif/max17048) | [![Component Registry](https://components.espressif.com/components/espressif/max17048/badge.svg)](https://components.espressif.com/components/espressif/max17048) |
117117
| [mcp23017](https://components.espressif.com/components/espressif/mcp23017) | [![Component Registry](https://components.espressif.com/components/espressif/mcp23017/badge.svg)](https://components.espressif.com/components/espressif/mcp23017) |
118+
| [mcp3201](https://components.espressif.com/components/espressif/mcp3201) | [![Component Registry](https://components.espressif.com/components/espressif/mcp3201/badge.svg)](https://components.espressif.com/components/espressif/mcp3201) |
118119
| [mvh3004d](https://components.espressif.com/components/espressif/mvh3004d) | [![Component Registry](https://components.espressif.com/components/espressif/mvh3004d/badge.svg)](https://components.espressif.com/components/espressif/mvh3004d) |
119120
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver) | [![Component Registry](https://components.espressif.com/components/espressif/ntc_driver/badge.svg)](https://components.espressif.com/components/espressif/ntc_driver) |
120121
| [openai](https://components.espressif.com/components/espressif/openai) | [![Component Registry](https://components.espressif.com/components/espressif/openai/badge.svg)](https://components.espressif.com/components/espressif/openai) |

components/.build-rules.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ components/openai/test_apps:
7070
enable:
7171
- if: INCLUDE_DEFAULT == 1
7272

73+
components/sensors/adc/mcp3201:
74+
enable:
75+
- if: IDF_TARGET in ["esp32s3"]
76+
7377
components/sensors/radar/at581x/test_apps:
7478
enable:
7579
- if: INCLUDE_DEFAULT == 1
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# ChangeLog
2+
3+
4+
## v0.1.0 - 2025-1-16
5+
6+
### Enhancements:
7+
8+
* Initial version.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
idf_component_register(SRCS "mcp3201.c"
2+
INCLUDE_DIRS include)
3+
4+
include(package_manager)
5+
cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR})
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Component: MCP3201
2+
3+
MCP3201 device is a successive approximation 12-bit Analog-to-Digital (A/D) Converter with on-board sample and hold circuitry. The device provides a single pseudo-differential input.Differential Nonlinearity (DNL) is specified at ±1 LSB, and Integral Nonlinearity (INL) is offered in ±1 LSB (MCP3201-B) and ±2 LSB (MCP3201-C) versions. Communication with the device is done using a simple serial interface compatible with the SPI protocol. The device is capable of sample rates of up to 100 ksps at a clock rate of 1.6 MHz. The MCP3201 device operates over a broad voltage range (2.7V-5.5V).Low-current design permits operation with typical standby and active currents of only 500 nA and 300 μA, respectively.
4+
5+
## Add component to your project
6+
7+
Please use the component manager command `add-dependency` to add the `mcp3201` to your project's dependency, during the `CMake` step the component will be downloaded automatically
8+
9+
```
10+
idf.py add-dependency "espressif/mcp3201=*"
11+
```
12+
13+
## Example of MCP3201 usage
14+
15+
```c
16+
static spi_bus_handle_t spi_bus = NULL;
17+
static mcp3201_handle_t mcp3201 = NULL;
18+
int16_t data;
19+
20+
// Step1: Init SPI bus
21+
spi_config_t bus_conf = {
22+
.miso_io_num = SPI_MISO_IO,
23+
.mosi_io_num = -1,
24+
.sclk_io_num = SPI_SCLK_IO,
25+
};
26+
spi_bus = spi_bus_create(SPI2_HOST, &bus_conf);
27+
TEST_ASSERT(spi_bus != NULL);
28+
29+
// Step2: Init MCP3201
30+
spi_device_config_t dev_cfg = {
31+
.mode = 0,
32+
.clock_speed_hz = SPI_FREQ_HZ,
33+
.cs_io_num = SPI_CS_IO,
34+
};
35+
mcp3201 = mcp3201_create(spi_bus, &dev_cfg);
36+
37+
// Step3: Read ADC value
38+
mcp3201_get_data(mcp3201, &data);
39+
ESP_LOGI(TAG, "MCP3201:%d,Convert:%.2f", data, 1.0f * data * (3.3f / 4096));
40+
```
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: 0.1.0
2+
description: SPI driver for MCP3201 adc sensor
3+
url: https://github.com/espressif/esp-iot-solution/tree/master/components/sensor/adc/mcp3201
4+
repository: https://github.com/espressif/esp-iot-solution.git
5+
documentation: https://docs.espressif.com/projects/esp-iot-solution/en/latest/sensors/adc.html
6+
issues: https://github.com/espressif/esp-iot-solution/issues
7+
dependencies:
8+
spi_bus:
9+
public: true
10+
override_path: "../../../spi_bus"
11+
idf: '>=4.4'
12+
cmake_utilities: "0.*"

0 commit comments

Comments
 (0)