Skip to content

Commit 4cdde1d

Browse files
author
Seppo Takalo
authored
Merge pull request #11052 from NXPmicro/Update_LPC546XX_ADC
Update MCUXpresso AnalogIn driver for LPC devices
2 parents fa9a3ed + 9b8a859 commit 4cdde1d

File tree

12 files changed

+3609
-1908
lines changed

12 files changed

+3609
-1908
lines changed

targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/analogin_api.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void analogin_init(analogin_t *obj, PinName pin)
4949
ADC_ClockPower_Configuration();
5050

5151
/* Ensure the ADC clock derived from the system clock is less than 80MHz */
52-
clkval = CLOCK_GetFreq(kCLOCK_CoreSysClk);
52+
clkval = CLOCK_GetFreq(kCLOCK_BusClk);
5353
while ((clkval / clkdiv) > MAX_ADC_CLOCK) {
5454
clkdiv++;
5555
}
@@ -61,20 +61,20 @@ void analogin_init(analogin_t *obj, PinName pin)
6161
}
6262

6363
ADC_GetDefaultConfig(&adc_config);
64-
adc_config.clockDividerNumber = clkdiv;
64+
adc_config.clockDividerNumber = (clkdiv - 1);
6565

6666
ADC_Init(adc_addrs[instance], &adc_config);
6767
pinmap_pinout(pin, PinMap_ADC);
6868

69-
/* Clear the DIGIMODE bit */
70-
reg = IOCON->PIO[port_number][pin_number] & ~IOCON_PIO_DIGIMODE_MASK;
69+
/* Clear the DIGIMODE & MODE bits */
70+
reg = IOCON->PIO[port_number][pin_number] & ~(IOCON_PIO_DIGIMODE_MASK | IOCON_PIO_MODE_MASK);
7171
IOCON->PIO[port_number][pin_number] = reg;
7272
}
7373

7474
uint16_t analogin_read_u16(analogin_t *obj)
7575
{
7676
uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
77-
uint32_t channel = obj->adc & 0xF;
77+
uint32_t channel = obj->adc & 0xFF;
7878
adc_conv_seq_config_t adcConvSeqConfigStruct;
7979
adc_result_info_t adcResultInfoStruct;
8080

@@ -93,13 +93,15 @@ uint16_t analogin_read_u16(analogin_t *obj)
9393
while (!ADC_GetChannelConversionResult(adc_addrs[instance], channel, &adcResultInfoStruct)) {
9494
}
9595

96-
return adcResultInfoStruct.result;
96+
/* The ADC has 12 bit resolution. We shift in 4 0s */
97+
/* from the right to make it a 16 bit number as expected */
98+
return adcResultInfoStruct.result << 4;
9799
}
98100

99101
float analogin_read(analogin_t *obj)
100102
{
101103
uint16_t value = analogin_read_u16(obj);
102-
return (float)value * (1.0f / (float)0xFFFF);
104+
return (float)value * (1.0f / (float)0xFFF0);
103105
}
104106

105107
const PinMap *analogin_pinmap()

targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC54114/device/TARGET_LPC54114_M4/LPC54114_cm4_features.h

Lines changed: 151 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,19 @@
11
/*
22
** ###################################################################
33
** Version: rev. 1.0, 2016-05-09
4-
** Build: b160802
4+
** Build: b190225
55
**
66
** Abstract:
77
** Chip specific module features.
88
**
9-
** Copyright (c) 2016 Freescale Semiconductor, Inc.
9+
** Copyright 2016 Freescale Semiconductor, Inc.
10+
** Copyright 2016-2019 NXP
1011
** All rights reserved.
1112
**
12-
** Redistribution and use in source and binary forms, with or without modification,
13-
** are permitted provided that the following conditions are met:
13+
** SPDX-License-Identifier: BSD-3-Clause
1414
**
15-
** o Redistributions of source code must retain the above copyright notice, this list
16-
** of conditions and the following disclaimer.
17-
**
18-
** o Redistributions in binary form must reproduce the above copyright notice, this
19-
** list of conditions and the following disclaimer in the documentation and/or
20-
** other materials provided with the distribution.
21-
**
22-
** o Neither the name of Freescale Semiconductor, Inc. nor the names of its
23-
** contributors may be used to endorse or promote products derived from this
24-
** software without specific prior written permission.
25-
**
26-
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
27-
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28-
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29-
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
30-
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31-
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32-
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
33-
** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34-
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35-
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36-
**
37-
** http: www.freescale.com
38-
15+
** http: www.nxp.com
16+
3917
**
4018
** Revisions:
4119
** - rev. 1.0 (2016-05-09)
@@ -55,6 +33,8 @@
5533
#define FSL_FEATURE_SOC_ASYNC_SYSCON_COUNT (1)
5634
/* @brief CRC availability on the SoC. */
5735
#define FSL_FEATURE_SOC_CRC_COUNT (1)
36+
/* @brief CTIMER availability on the SoC. */
37+
#define FSL_FEATURE_SOC_CTIMER_COUNT (5)
5838
/* @brief DMA availability on the SoC. */
5939
#define FSL_FEATURE_SOC_DMA_COUNT (1)
6040
/* @brief DMIC availability on the SoC. */
@@ -89,8 +69,6 @@
8969
#define FSL_FEATURE_SOC_SPIFI_COUNT (1)
9070
/* @brief SYSCON availability on the SoC. */
9171
#define FSL_FEATURE_SOC_SYSCON_COUNT (1)
92-
/* @brief CTIMER availability on the SoC. */
93-
#define FSL_FEATURE_SOC_CTIMER_COUNT (5)
9472
/* @brief USART availability on the SoC. */
9573
#define FSL_FEATURE_SOC_USART_COUNT (8)
9674
/* @brief USB availability on the SoC. */
@@ -100,16 +78,139 @@
10078
/* @brief WWDT availability on the SoC. */
10179
#define FSL_FEATURE_SOC_WWDT_COUNT (1)
10280

81+
/* ADC module features */
82+
83+
/* @brief Do not has input select (register INSEL). */
84+
#define FSL_FEATURE_ADC_HAS_NO_INSEL (0)
85+
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
86+
#define FSL_FEATURE_ADC_HAS_CTRL_ASYNMODE (1)
87+
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
88+
#define FSL_FEATURE_ADC_HAS_CTRL_RESOL (1)
89+
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
90+
#define FSL_FEATURE_ADC_HAS_CTRL_BYPASSCAL (1)
91+
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
92+
#define FSL_FEATURE_ADC_HAS_CTRL_TSAMP (1)
93+
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
94+
#define FSL_FEATURE_ADC_HAS_CTRL_LPWRMODE (0)
95+
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
96+
#define FSL_FEATURE_ADC_HAS_CTRL_CALMODE (0)
97+
/* @brief Has startup register. */
98+
#define FSL_FEATURE_ADC_HAS_STARTUP_REG (1)
99+
/* @brief Has ADTrim register */
100+
#define FSL_FEATURE_ADC_HAS_TRIM_REG (0)
101+
/* @brief Has Calibration register. */
102+
#define FSL_FEATURE_ADC_HAS_CALIB_REG (1)
103+
103104
/* DMA module features */
104105

105106
/* @brief Number of channels */
106107
#define FSL_FEATURE_DMA_NUMBER_OF_CHANNELS (20)
108+
/* @brief Align size of DMA descriptor */
109+
#define FSL_FEATURE_DMA_DESCRIPTOR_ALIGN_SIZE (512)
110+
/* @brief DMA head link descriptor table align size */
111+
#define FSL_FEATURE_DMA_LINK_DESCRIPTOR_ALIGN_SIZE (16U)
112+
113+
/* FLEXCOMM module features */
114+
115+
/* @brief FLEXCOMM0 USART INDEX 0 */
116+
#define FSL_FEATURE_FLEXCOMM0_USART_INDEX (0)
117+
/* @brief FLEXCOMM0 SPI INDEX 0 */
118+
#define FSL_FEATURE_FLEXCOMM0_SPI_INDEX (0)
119+
/* @brief FLEXCOMM0 I2C INDEX 0 */
120+
#define FSL_FEATURE_FLEXCOMM0_I2C_INDEX (0)
121+
/* @brief FLEXCOMM1 USART INDEX 1 */
122+
#define FSL_FEATURE_FLEXCOMM1_USART_INDEX (1)
123+
/* @brief FLEXCOMM1 SPI INDEX 1 */
124+
#define FSL_FEATURE_FLEXCOMM1_SPI_INDEX (1)
125+
/* @brief FLEXCOMM1 I2C INDEX 1 */
126+
#define FSL_FEATURE_FLEXCOMM1_I2C_INDEX (1)
127+
/* @brief FLEXCOMM2 USART INDEX 2 */
128+
#define FSL_FEATURE_FLEXCOMM2_USART_INDEX (2)
129+
/* @brief FLEXCOMM2 SPI INDEX 2 */
130+
#define FSL_FEATURE_FLEXCOMM2_SPI_INDEX (2)
131+
/* @brief FLEXCOMM2 I2C INDEX 2 */
132+
#define FSL_FEATURE_FLEXCOMM2_I2C_INDEX (2)
133+
/* @brief FLEXCOMM3 USART INDEX 3 */
134+
#define FSL_FEATURE_FLEXCOMM3_USART_INDEX (3)
135+
/* @brief FLEXCOMM3 SPI INDEX 3 */
136+
#define FSL_FEATURE_FLEXCOMM3_SPI_INDEX (3)
137+
/* @brief FLEXCOMM3 I2C INDEX 3 */
138+
#define FSL_FEATURE_FLEXCOMM3_I2C_INDEX (3)
139+
/* @brief FLEXCOMM4 USART INDEX 4 */
140+
#define FSL_FEATURE_FLEXCOMM4_USART_INDEX (4)
141+
/* @brief FLEXCOMM4 SPI INDEX 4 */
142+
#define FSL_FEATURE_FLEXCOMM4_SPI_INDEX (4)
143+
/* @brief FLEXCOMM4 I2C INDEX 4 */
144+
#define FSL_FEATURE_FLEXCOMM4_I2C_INDEX (4)
145+
/* @brief FLEXCOMM5 USART INDEX 5 */
146+
#define FSL_FEATURE_FLEXCOMM5_USART_INDEX (5)
147+
/* @brief FLEXCOMM5 SPI INDEX 5 */
148+
#define FSL_FEATURE_FLEXCOMM5_SPI_INDEX (5)
149+
/* @brief FLEXCOMM5 I2C INDEX 5 */
150+
#define FSL_FEATURE_FLEXCOMM5_I2C_INDEX (5)
151+
/* @brief FLEXCOMM6 USART INDEX 6 */
152+
#define FSL_FEATURE_FLEXCOMM6_USART_INDEX (6)
153+
/* @brief FLEXCOMM6 SPI INDEX 6 */
154+
#define FSL_FEATURE_FLEXCOMM6_SPI_INDEX (6)
155+
/* @brief FLEXCOMM6 I2C INDEX 6 */
156+
#define FSL_FEATURE_FLEXCOMM6_I2C_INDEX (6)
157+
/* @brief FLEXCOMM7 I2S INDEX 0 */
158+
#define FSL_FEATURE_FLEXCOMM6_I2S_INDEX (0)
159+
/* @brief FLEXCOMM7 USART INDEX 7 */
160+
#define FSL_FEATURE_FLEXCOMM7_USART_INDEX (7)
161+
/* @brief FLEXCOMM7 SPI INDEX 7 */
162+
#define FSL_FEATURE_FLEXCOMM7_SPI_INDEX (7)
163+
/* @brief FLEXCOMM7 I2C INDEX 7 */
164+
#define FSL_FEATURE_FLEXCOMM7_I2C_INDEX (7)
165+
/* @brief FLEXCOMM7 I2S INDEX 1 */
166+
#define FSL_FEATURE_FLEXCOMM7_I2S_INDEX (1)
167+
/* @brief I2S has DMIC interconnection */
168+
#define FSL_FEATURE_FLEXCOMM_INSTANCE_I2S_HAS_DMIC_INTERCONNECTIONn(x) \
169+
(((x) == FLEXCOMM0) ? (0) : \
170+
(((x) == FLEXCOMM1) ? (0) : \
171+
(((x) == FLEXCOMM2) ? (0) : \
172+
(((x) == FLEXCOMM3) ? (0) : \
173+
(((x) == FLEXCOMM4) ? (0) : \
174+
(((x) == FLEXCOMM5) ? (0) : \
175+
(((x) == FLEXCOMM6) ? (0) : \
176+
(((x) == FLEXCOMM7) ? (1) : (-1)))))))))
177+
178+
/* I2S module features */
179+
180+
/* @brief I2S support dual channel transfer */
181+
#define FSL_FEATURE_I2S_SUPPORT_SECONDARY_CHANNEL (0)
182+
/* @brief I2S has DMIC interconnection */
183+
#define FSL_FEATURE_FLEXCOMM_I2S_HAS_DMIC_INTERCONNECTION (1)
184+
185+
/* MAILBOX module features */
186+
187+
/* @brief Mailbox side for current core */
188+
#define FSL_FEATURE_MAILBOX_SIDE_A (1)
189+
/* @brief Mailbox has no reset control */
190+
#define FSL_FEATURE_MAILBOX_HAS_NO_RESET (1)
191+
192+
/* MRT module features */
193+
194+
/* @brief number of channels. */
195+
#define FSL_FEATURE_MRT_NUMBER_OF_CHANNELS (4)
196+
197+
/* interrupt module features */
198+
199+
/* @brief Lowest interrupt request number. */
200+
#define FSL_FEATURE_INTERRUPT_IRQ_MIN (-14)
201+
/* @brief Highest interrupt request number. */
202+
#define FSL_FEATURE_INTERRUPT_IRQ_MAX (105)
107203

108204
/* PINT module features */
109205

110206
/* @brief Number of connected outputs */
111207
#define FSL_FEATURE_PINT_NUMBER_OF_CONNECTED_OUTPUTS (8)
112208

209+
/* RTC module features */
210+
211+
/* @brief RTC has no reset control */
212+
#define FSL_FEATURE_RTC_HAS_NO_RESET (1)
213+
113214
/* SCT module features */
114215

115216
/* @brief Number of events */
@@ -118,6 +219,8 @@
118219
#define FSL_FEATURE_SCT_NUMBER_OF_STATES (10)
119220
/* @brief Number of match capture */
120221
#define FSL_FEATURE_SCT_NUMBER_OF_MATCH_CAPTURE (10)
222+
/* @brief Number of outputs */
223+
#define FSL_FEATURE_SCT_NUMBER_OF_OUTPUTS (8)
121224

122225
/* SYSCON module features */
123226

@@ -129,6 +232,24 @@
129232
#define FSL_FEATURE_SYSCON_FLASH_SECTOR_SIZE_BYTES (32768)
130233
/* @brief Flash size in bytes */
131234
#define FSL_FEATURE_SYSCON_FLASH_SIZE_BYTES (262144)
235+
/* @brief IAP has Flash read & write function */
236+
#define FSL_FEATURE_IAP_HAS_FLASH_FUNCTION (1)
237+
/* @brief IAP has read Flash signature function */
238+
#define FSL_FEATURE_IAP_HAS_FLASH_SIGNATURE_READ (1)
239+
/* @brief IAP has read extended Flash signature function */
240+
#define FSL_FEATURE_IAP_HAS_FLASH_EXTENDED_SIGNATURE_READ (0)
241+
242+
/* SysTick module features */
243+
244+
/* @brief Systick has external reference clock. */
245+
#define FSL_FEATURE_SYSTICK_HAS_EXT_REF (0)
246+
/* @brief Systick external reference clock is core clock divided by this value. */
247+
#define FSL_FEATURE_SYSTICK_EXT_REF_CORE_DIV (0)
248+
249+
/* USB module features */
250+
251+
/* @brief Number of the endpoint in USB FS */
252+
#define FSL_FEATURE_USB_EP_NUM (5)
132253

133254
#endif /* _LPC54114_cm4_FEATURES_H_ */
134255

0 commit comments

Comments
 (0)