Part Number: MSP432P401R
Due to some resource constraints, we have several distinct I2C buses that need to share an eUSCI_B peripheral. They do not need to be in use simultaneously so I expected it would be no problem:
1. Use the initial I2C bus setup
2. Assert UCSWRST=1 via I2C_disableModule
3. Reconfigure the pins (turn old pins SEL=0 via GPIO_setAsInputPin, set PMAP for new pins, turn new pins SEL=1 via GPIO_setAsPeripheralModuleFunctionInputPin)
4. Re-enable RX/TX interrupts with I2C_enableInterrupt
5. Call I2C_enableModule and use the alternate I2C bus
However, what I am seeing is that after I do these steps, when I start a transfer the eUSCI_B just toggles the SDA/SCL pins constantly until I reset the CPU, none of the normal interrupts fire. [Clarification: none of the normal/typical I2C interrupts like TX/RX for this UCB get triggered, normal systick and other stuff does proceed!] My logic analyzer shows it as just constant start conditions (not a "repeated start" just keeps dropping SDA low while SCL is high) and it never sends the target address.
After the code calls I2C_masterSendStart, would prevent the eUSCI_B from sending the address in I2CSA? Is there something more than UCSWRST that I need to set before adjusting which pins are used via PMAP?