16 #ifdef __MSP430_HAS_SD24_B__
21 void SD24_B_init(uint16_t baseAddress, SD24_B_initParam *
param)
24 HWREG16(baseAddress + OFS_SD24BIE) &= 0x0000;
25 HWREG16(baseAddress + OFS_SD24BIFG) &= 0x0000;
26 HWREG16(baseAddress + OFS_SD24BTRGCTL) &= ~(SD24TRGIE | SD24TRGIFG);
29 HWREG16(baseAddress + OFS_SD24BCTL1) &= ~(SD24GRP0SC | SD24GRP1SC
30 | SD24GRP2SC | SD24GRP3SC);
33 HWREG16(baseAddress + OFS_SD24BCTL0) &= ~((SD24DIV4 | SD24DIV3 | SD24DIV2
34 | SD24DIV1 | SD24DIV0) | SD24PDIV_7 | SD24SSEL_3 | SD24REFS);
35 HWREG16(baseAddress + OFS_SD24BCTL0) |= (
param->clockSourceSelect |
41 void SD24_B_initConverter(uint16_t baseAddress,
42 SD24_B_initConverterParam *
param)
44 uint16_t address = baseAddress + (OFS_SD24BCCTL0 + (
param->converter * 0x08));
47 HWREG16(address) &= ~(SD24ALGN | SD24SNGL | SD24SCS__GROUP3);
50 (((uint16_t)
param->conversionMode) << 8));
53 void SD24_B_initConverterAdvanced(uint16_t baseAddress,
54 SD24_B_initConverterAdvancedParam *
param)
57 uint16_t address = baseAddress + (OFS_SD24BCCTL0 + (
param->converter * 0x08));
60 HWREG16(address) &= ~(SD24ALGN | SD24SNGL | SD24DF1 | SD24DF0 | SD24SCS__GROUP3 );
63 (((uint16_t)
param->conversionMode) << 8));
66 address = baseAddress + (OFS_SD24BINCTL0 + (
param->converter * 0x08));
69 HWREG16(address) &= ~(SD24GAIN_128 | SD24INTDLY_3);
74 address = baseAddress + (OFS_SD24BOSR0 + (
param->converter * 0x08));
77 HWREG16(address) &= ~(OSR10 | OSR9 | OSR8 | OSR7 | OSR6 | OSR5 | OSR4 |
78 OSR3 | OSR2 | OSR1 | OSR0);
82 void SD24_B_setConverterDataFormat(uint16_t baseAddress,
86 uint16_t address = baseAddress + (OFS_SD24BCCTL0_L +
89 HWREG8(address) &= ~(SD24DF0 | SD24DF1);
91 HWREG8(address) |= dataFormat;
94 void SD24_B_startGroupConversion(uint16_t baseAddress,
99 HWREG16(baseAddress + OFS_SD24BCTL1) |= SD24GRP0SC;
break;
101 HWREG16(baseAddress + OFS_SD24BCTL1) |= SD24GRP1SC;
break;
103 HWREG16(baseAddress + OFS_SD24BCTL1) |= SD24GRP2SC;
break;
105 HWREG16(baseAddress + OFS_SD24BCTL1) |= SD24GRP3SC;
break;
109 void SD24_B_stopGroupConversion(uint16_t baseAddress,
114 HWREG16(baseAddress + OFS_SD24BCTL1) &= ~(SD24GRP0SC);
break;
116 HWREG16(baseAddress + OFS_SD24BCTL1) &= ~(SD24GRP1SC);
break;
118 HWREG16(baseAddress + OFS_SD24BCTL1) &= ~(SD24GRP2SC);
break;
120 HWREG16(baseAddress + OFS_SD24BCTL1) &= ~(SD24GRP3SC);
break;
124 void SD24_B_startConverterConversion(uint16_t baseAddress,
127 uint16_t address = baseAddress + (OFS_SD24BCCTL0 + (converter * 0x08));
130 HWREG16(address) &= ~(SD24SCS_7);
136 void SD24_B_stopConverterConversion(uint16_t baseAddress,
139 uint16_t address = baseAddress + (OFS_SD24BCCTL0 + (converter * 0x08));
142 HWREG16(address) &= ~(SD24SCS_7);
148 void SD24_B_configureDMATrigger(uint16_t baseAddress,
149 uint16_t interruptFlag)
152 HWREG16(baseAddress + OFS_SD24BCTL1) &= ~(SD24DMA3 | SD24DMA2 |
153 SD24DMA1 | SD24DMA0);
155 HWREG16(baseAddress + OFS_SD24BCTL1) |= interruptFlag;
158 void SD24_B_setInterruptDelay(uint16_t baseAddress,
162 uint16_t address = baseAddress + (OFS_SD24BINCTL0 + (converter * 0x08));
165 HWREG16(address) &= ~(SD24INTDLY_3);
167 HWREG16(address) |= sampleDelay;
170 void SD24_B_setConversionDelay(uint16_t baseAddress,
174 uint16_t address = baseAddress + (OFS_SD24BPRE0 + (converter * 0x08));
179 HWREG16(address) |= cycleDelay;
182 void SD24_B_setOversampling(uint16_t baseAddress,
184 uint16_t oversampleRatio)
186 uint16_t address = baseAddress + (OFS_SD24BOSR0 + (converter * 0x08));
189 HWREG16(address) &= ~(OSR10 | OSR9 | OSR8 | OSR7 | OSR6 | OSR5 | OSR4 |
190 OSR3 | OSR2 | OSR1 | OSR0);
192 HWREG16(address) |= oversampleRatio;
195 void SD24_B_setGain(uint16_t baseAddress,
199 uint16_t address = baseAddress + (OFS_SD24BINCTL0 + (converter * 0x08));
202 HWREG16(address) &= ~(SD24GAIN_128);
207 uint32_t SD24_B_getResults(uint16_t baseAddress,
211 uint16_t address = baseAddress + (OFS_SD24BMEML0 + (converter * 0x04));
214 uint16_t lowResult =
HWREG16(address);
217 uint32_t result = (((uint32_t)
HWREG16(address + 0x02) ) << 16) + lowResult;
222 uint16_t SD24_B_getHighWordResults(uint16_t baseAddress,
226 uint16_t address = baseAddress + (OFS_SD24BMEMH0 + (converter * 0x04));
229 uint16_t result =
HWREG16(address);
234 void SD24_B_enableInterrupt (uint16_t baseAddress,
239 HWREG16(baseAddress + OFS_SD24BIE) |= (mask << converter);
242 void SD24_B_disableInterrupt (uint16_t baseAddress,
246 HWREG16(baseAddress + OFS_SD24BIE) &= ~(mask << converter);
249 void SD24_B_clearInterrupt (uint16_t baseAddress,
253 HWREG16(baseAddress + OFS_SD24BIFG) &= ~(mask << converter);
256 uint16_t SD24_B_getInterruptStatus (uint16_t baseAddress,
260 return (
HWREG16(baseAddress + OFS_SD24BIFG) & (mask << converter) );
MPU_initThreeSegmentsParam param