Skip to content

Commit db967c2

Browse files
author
oclyke
committed
move additional functionality out of HAL
This keeps our additional functionallity avaialble in our own source code so that the HAL can be easily updated later w/o worrying about undoing the configuration work.
1 parent 7e98adc commit db967c2

File tree

5 files changed

+589
-55
lines changed

5 files changed

+589
-55
lines changed

cores/arduino/am_sdk_ap3/HAL-Variances.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

cores/arduino/am_sdk_ap3/mcu/apollo3/hal/am_hal_iom.c

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,57 +2240,7 @@ am_hal_iom_configure(void *pHandle, am_hal_iom_config_t *psConfig)
22402240
_VAL2FLD(IOM0_MI2CCFG_ADDRSZ, IOM0_MI2CCFG_ADDRSZ_ADDRSZ7);
22412241
break;
22422242
default:
2243-
{
2244-
//Calculate TOTPER and FSEL based on requested frequency
2245-
uint32_t reqFreq = psConfig->ui32ClockFreq;
2246-
uint32_t fsel = 2;
2247-
uint32_t totper = 0;
2248-
for( ; fsel < 128 ; fsel = fsel * 2)
2249-
{
2250-
//IOM and HFRC are not affected by burst mode
2251-
totper = (48000000 / (2 * fsel))/reqFreq - 1;
2252-
if(totper < 256) break;
2253-
}
2254-
2255-
if(fsel == 128)
2256-
{
2257-
//If fsel is too large, return with error
2258-
return AM_HAL_STATUS_INVALID_ARG;
2259-
}
2260-
2261-
uint32_t fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV2;
2262-
2263-
if(fsel == 2)
2264-
fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV2;
2265-
else if(fsel == 4)
2266-
fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV4;
2267-
else if(fsel == 8)
2268-
fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV8;
2269-
else if(fsel == 16)
2270-
fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV16;
2271-
else if(fsel == 32)
2272-
fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV32;
2273-
else if(fsel == 64)
2274-
fsel_bitvalue = IOM0_CLKCFG_FSEL_HFRC_DIV64;
2275-
2276-
ui32ClkCfg = _VAL2FLD(IOM0_CLKCFG_TOTPER, totper) |
2277-
_VAL2FLD(IOM0_CLKCFG_LOWPER, totper/2) |
2278-
_VAL2FLD(IOM0_CLKCFG_DIVEN, IOM0_CLKCFG_DIVEN_EN) |
2279-
_VAL2FLD(IOM0_CLKCFG_DIV3, IOM0_CLKCFG_DIV3_DIS) |
2280-
_VAL2FLD(IOM0_CLKCFG_FSEL, fsel_bitvalue) |
2281-
_VAL2FLD(IOM0_CLKCFG_IOCLKEN, 1);
2282-
IOMn(ui32Module)->MI2CCFG = _VAL2FLD(IOM0_MI2CCFG_STRDIS, 0) |
2283-
_VAL2FLD(IOM0_MI2CCFG_SMPCNT, 0x21) |
2284-
_VAL2FLD(IOM0_MI2CCFG_SDAENDLY, 3) |
2285-
_VAL2FLD(IOM0_MI2CCFG_SCLENDLY, 0) |
2286-
_VAL2FLD(IOM0_MI2CCFG_MI2CRST, 1) |
2287-
_VAL2FLD(IOM0_MI2CCFG_SDADLY, 0) |
2288-
_VAL2FLD(IOM0_MI2CCFG_ARBEN, IOM0_MI2CCFG_ARBEN_ARBDIS) |
2289-
_VAL2FLD(IOM0_MI2CCFG_I2CLSB, IOM0_MI2CCFG_I2CLSB_MSBFIRST) |
2290-
_VAL2FLD(IOM0_MI2CCFG_ADDRSZ, IOM0_MI2CCFG_ADDRSZ_ADDRSZ7);
2291-
break;
2292-
2293-
}
2243+
return AM_HAL_STATUS_INVALID_ARG;
22942244
}
22952245

22962246
}

cores/arduino/ard_sup/ap3_iomaster.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class IOMaster {
4646

4747
ap3_err_t ap3_iom_pad_funcsel( uint8_t instance, ap3_iom_pad_type_e type, ap3_gpio_pad_t* pad, uint8_t* funcsel );
4848

49+
extern "C" uint32_t ap3_iom_configure(void *pHandle, am_hal_iom_config_t *psConfig);
4950

5051

5152
#endif // _AP3_IOMASTER_H_

0 commit comments

Comments
 (0)