Finished I2C
This commit is contained in:
@@ -77,10 +77,10 @@ constexpr SHAL_I2C_Timing_Reg getI2CTimerReg(const I2C_Pair pair){
|
||||
switch(pair){
|
||||
case I2C_Pair::SCL1B6_SDA1B7:
|
||||
case I2C_Pair::SCL1B8_SDA1B9:
|
||||
return {&I2C1->TIMINGR,31,4,23,4,19,4,15,8,7,0};
|
||||
return {&I2C1->TIMINGR,31,23,19,15,7};
|
||||
case I2C_Pair::SCL2B10_SDA2B11:
|
||||
case I2C_Pair::SCL2B13_SDA2B14:
|
||||
return {&I2C2->TIMINGR,31,4,23,4,19,4,15,8,7,0};
|
||||
return {&I2C2->TIMINGR,31,23,19,15,7};
|
||||
case I2C_Pair::NUM_PAIRS:
|
||||
case I2C_Pair::INVALID:
|
||||
assert(false);
|
||||
|
||||
@@ -31,15 +31,10 @@ struct SHAL_I2C_Reset_Reg{
|
||||
struct SHAL_I2C_Timing_Reg{
|
||||
volatile uint32_t* reg;
|
||||
uint8_t prescaler_offset;
|
||||
uint8_t prescaler_width;
|
||||
uint8_t dataSetupTime_offset;
|
||||
uint8_t dataSetupTime_width;
|
||||
uint8_t dataHoldTime_offset;
|
||||
uint8_t dataHoldTime_width;
|
||||
uint8_t SCLHighPeriod_offset;
|
||||
uint8_t SCLHighPeriod_width;
|
||||
uint8_t SCLLowPeriod_offset;
|
||||
uint8_t SCLLowPeriod_width;
|
||||
};
|
||||
|
||||
#endif //SHMINGO_HAL_SHAL_I2C_TYPES_H
|
||||
|
||||
@@ -17,7 +17,16 @@ public:
|
||||
|
||||
void init(I2C_Pair pair) volatile;
|
||||
|
||||
void masterTransmit();
|
||||
///
|
||||
/// \param addr I2C address of slave device
|
||||
/// \param reg Address of register in slave device to write to
|
||||
/// \param data Data to write to slave register
|
||||
void masterTransmit(uint8_t addr, uint8_t reg, uint8_t data);
|
||||
|
||||
///
|
||||
/// \param addr I2C address of slave device
|
||||
/// \param reg Register to read data from
|
||||
uint8_t masterReceive(uint8_t addr, uint8_t reg);
|
||||
|
||||
//Manually set the clock configuration. Refer to your MCU's reference manual for examples
|
||||
void setClockConfig(uint8_t prescaler, uint8_t dataSetupTime, uint8_t dataHoldTime, uint8_t SCLHighPeriod, uint8_t SCLLowPeriod);
|
||||
@@ -33,9 +42,7 @@ private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#define I2C(num) I2CManager::get(num)
|
||||
|
||||
class I2CManager{
|
||||
|
||||
@@ -47,7 +54,7 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
inline static SHAL_I2C m_UARTs[NUM_I2C_BUSES] = {};
|
||||
inline static SHAL_I2C m_I2CBuses[NUM_I2C_BUSES] = {};
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user