81 #define I2C_NULL ((void *)0) 92 #define I2CxST_NACK ((uint32_t)0x00000008) 93 #define I2CxST_I2CBF ((uint32_t)0x00000004) 94 #define I2CxST_I2CAL ((uint32_t)0x00000002) 95 #define I2CxST_I2C ((uint32_t)0x00000001) 96 #define I2CxST_CLEAR ((uint32_t)0x0000000F) 106 #define I2CxCR1_ACK ((uint32_t)0x00000010) 107 #define I2CxCR1_NOACK ((uint32_t)0x00000008) 108 #define I2CxCR1_BC ((uint32_t)0x000000E0) 119 #define I2CxDBR_DB_MASK ((uint32_t)0x000000FF) 130 #define I2CxCR2_PIN_CLEAR ((uint32_t)0x00000010) 131 #define I2CxCR2_I2CM_DISABLE ((uint32_t)0x00000000) 132 #define I2CxCR2_I2CM_ENABLE ((uint32_t)0x00000008) 133 #define I2CxCR2_SWRES_10 ((uint32_t)0x00000002) 134 #define I2CxCR2_SWRES_01 ((uint32_t)0x00000001) 135 #define I2CxCR2_START_CONDITION ((uint32_t)0x000000F8) 136 #define I2CxCR2_STOP_CONDITION ((uint32_t)0x000000D8) 137 #define I2CxCR2_INIT ((uint32_t)0x00000008) 148 #define I2CxSR_MST ((uint32_t)0x00000080) 149 #define I2CxSR_TRX ((uint32_t)0x00000040) 150 #define I2CxSR_BB ((uint32_t)0x00000020) 151 #define I2CxSR_PIN ((uint32_t)0x00000010) 152 #define I2CxSR_AL ((uint32_t)0x00000008) 153 #define I2CxSR_AAS ((uint32_t)0x00000004) 154 #define I2CxSR_AD0 ((uint32_t)0x00000002) 155 #define I2CxSR_LRB ((uint32_t)0x00000001) 165 #define I2CxPRS_PRCK ((uint32_t)0x0000001F) 175 #define I2CxIE_SELPINCD ((uint32_t)0x00000040) 176 #define I2CxIE_DMARI2CTX ((uint32_t)0x00000020) 177 #define I2CxIE_DMARI2CRX ((uint32_t)0x00000010) 178 #define I2CxIE_I2C ((uint32_t)0x00000001) 179 #define I2CxIE_CLEAR ((uint32_t)0x00000000) 191 #define I2CxOP_DISAL ((uint32_t)0x00000080) 192 #define I2CxOP_SA2ST ((uint32_t)0x00000040) 193 #define I2CxOP_SAST ((uint32_t)0x00000020) 194 #define I2CxOP_NFSEL ((uint32_t)0x00000010) 195 #define I2CxOP_RSTA ((uint32_t)0x00000008) 196 #define I2CxOP_GCDI ((uint32_t)0x00000004) 197 #define I2CxOP_SREN ((uint32_t)0x00000002) 198 #define I2CxOP_MFACK ((uint32_t)0x00000001) 199 #ifndef I2C_MULTI_MASTER 200 #define I2CxOP_INIT ((uint32_t)0x00000084) 202 #define I2CxOP_INIT ((uint32_t)0x00000004) 204 #define I2CxOP_SLAVE_INIT ((uint32_t)0x00000084) 214 #define I2CxAR_ALS ((uint32_t)0x00000001) 215 #define I2CxAR_INIT ((uint32_t)0x00000000) 216 #define I2CxAR2_INIT ((uint32_t)0x00000000) 228 #define I2CxPM_SDA_SCL ((uint32_t)0x00000003) 238 #define I2CxWUPCR_INT_RELESE ((uint32_t)0x00000001) 239 #define I2CxWUPCR_INT_HOLD ((uint32_t)0x00000000) 249 #define I2CxWUPCR_RST_RESET ((uint32_t)0x00000010) 250 #define I2CxWUPCR_RST_RELEASE ((uint32_t)0x00000000) 261 #define I2CxWUPCR_ACK ((uint32_t)0x00000020) 262 #define I2CxWUPCR_NACK ((uint32_t)0x00000000) 346 #if defined(I2CSxWUP_EN) 398 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
421 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
423 return (((p_obj->
p_instance->PM & I2CxPM_SDA_SCL) == I2CxPM_SDA_SCL));
427 return (((p_obj->
p_instance->PM & I2CxPM_SDA_SCL) == I2CxPM_SDA_SCL));
442 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
444 p_obj->
p_instance->CR2 = I2CxCR2_STOP_CONDITION;
447 p_obj->
p_instance->CR2 = I2CxCR2_STOP_CONDITION;
462 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
464 return (p_obj->
p_instance->DBR & I2CxDBR_DB_MASK);
468 return (p_obj->
p_instance->DBR & I2CxDBR_DB_MASK);
484 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
486 p_obj->
p_instance->DBR = (data & I2CxDBR_DB_MASK);
489 p_obj->
p_instance->DBR = (data & I2CxDBR_DB_MASK);
505 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
509 return ((opreg & I2CxOP_RSTA) == I2CxOP_RSTA);
515 return ((opreg & I2CxOP_RSTA) == I2CxOP_RSTA);
531 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
566 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
568 return ((p_obj->
p_instance->SR & I2CxSR_LRB) == I2CxSR_LRB);
572 return ((p_obj->
p_instance->SR & I2CxSR_LRB) == I2CxSR_LRB);
588 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
590 return ((p_obj->
p_instance->SR & I2CxSR_BB) == I2CxSR_BB);
594 return ((p_obj->
p_instance->SR & I2CxSR_BB) == I2CxSR_BB);
610 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
612 return ((p_obj->
p_instance->SR & I2CxSR_MST) == I2CxSR_MST);
616 return ((p_obj->
p_instance->SR & I2CxSR_MST) == I2CxSR_MST);
632 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
634 return ((p_obj->
p_instance->SR & I2CxSR_TRX) == I2CxSR_TRX);
638 return ((p_obj->
p_instance->SR & I2CxSR_TRX) == I2CxSR_TRX);
654 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
656 return ((p_obj->
p_instance->ST & I2CxST_I2C) == I2CxST_I2C);
660 return ((p_obj->
p_instance->ST & I2CxST_I2C) == I2CxST_I2C);
675 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
695 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
716 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
720 p_obj->
p_instance->IE = (I2CxIE_SELPINCD | I2CxIE_DMARI2CTX);
724 p_obj->
p_instance->IE = (I2CxIE_SELPINCD | I2CxIE_DMARI2CRX);
730 p_obj->
p_instance->IE = (I2CxIE_SELPINCD | I2CxIE_DMARI2CTX);
734 p_obj->
p_instance->IE = (I2CxIE_SELPINCD | I2CxIE_DMARI2CRX);
750 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
771 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
793 if ((p_obj != I2C_NULL) && (p_obj->
p_instance != I2C_NULL))
795 return (((p_obj->
p_instance->SR & I2CxSR_AAS) == I2CxSR_AAS)
796 && ((p_obj->
p_instance->OP & I2CxOP_SAST) == I2CxOP_SAST));
800 return (((p_obj->
p_instance->SR & I2CxSR_AAS) == I2CxSR_AAS)
801 && ((p_obj->
p_instance->OP & I2CxOP_SAST) == I2CxOP_SAST));
820 #if defined(I2CSxWUP_EN) void I2C_slave_init(I2C_t *p_obj)
Slave mode setting.
Definition: txz_i2c.c:294
I2CS handle structure definenition.
Definition: txz_i2c.h:352
TSB_I2C_TypeDef * p_instance
Definition: txz_i2c.h:343
Wakeup Control setting structure definenition.
Definition: txz_i2c.h:309
uint32_t intend
Definition: txz_i2c.h:313
void I2C_init(I2C_t *p_obj)
Initializing I2C Regester.
Definition: txz_i2c.c:166
__STATIC_INLINE int32_t I2C_int_status(I2C_t *p_obj)
Interrupt Status.
Definition: txz_i2c.h:651
__STATIC_INLINE int32_t I2C_transmitter(I2C_t *p_obj)
Return The Transmitter.
Definition: txz_i2c.h:629
__STATIC_INLINE int32_t I2C_restart(I2C_t *p_obj)
Return restart condition.
Definition: txz_i2c.h:502
Clock setting structure definenition.
Definition: txz_i2c.h:298
TSB_I2CS_TypeDef * p_instance
Definition: txz_i2c.h:354
__STATIC_INLINE uint32_t I2C_read_data(I2C_t *p_obj)
Read from Data buffer.
Definition: txz_i2c.h:459
I2C_clock_setting_t clock
Definition: txz_i2c.h:323
__STATIC_INLINE int32_t I2C_get_ack(I2C_t *p_obj)
Return received Ack condition.
Definition: txz_i2c.h:563
__STATIC_INLINE void I2C_enable_interrupt_dma(I2C_t *p_obj, int32_t tx)
Enable Interrupt setting.
Definition: txz_i2c.h:713
__STATIC_INLINE void I2C_disable_interrupt(I2C_t *p_obj)
Disable Interrupt setting.
Definition: txz_i2c.h:747
__STATIC_INLINE void I2C_set_address(I2C_t *p_obj, uint32_t addr)
Set slave address.
Definition: txz_i2c.h:768
void I2CS_Secondary_slave_adr_set(I2CS_t *p_obj, uint32_t adr)
Secondary Slave Address setting.
Definition: txz_i2c.c:363
uint32_t sck
Definition: txz_i2c.h:300
__STATIC_INLINE int32_t I2C_status_busy(I2C_t *p_obj)
Return Busy condition.
Definition: txz_i2c.h:585
uint32_t ack
Definition: txz_i2c.h:311
__STATIC_INLINE void I2C_clear_int_status(I2C_t *p_obj)
Interrupt Status Clear.
Definition: txz_i2c.h:672
uint32_t reset
Definition: txz_i2c.h:312
void I2C_start_condition(I2C_t *p_obj, uint32_t data)
Generate start condition.
Definition: txz_i2c.c:194
__STATIC_INLINE int32_t I2C_port_high(I2C_t *p_obj)
I2C bus port high.
Definition: txz_i2c.h:418
All common macro and definition for TXZ peripheral drivers.
__STATIC_INLINE int32_t I2C_slave_detected(I2C_t *p_obj)
Detecting Slave Address.
Definition: txz_i2c.h:790
I2CS_initial_setting_t init
Definition: txz_i2c.h:355
uint32_t I2C_get_clock_setting(I2C_t *p_obj, uint32_t frequency, uint32_t fsys, I2C_clock_setting_t *p_setting)
Return the I2c clock setting.
Definition: txz_i2c.c:232
__STATIC_INLINE void I2C_write_data(I2C_t *p_obj, uint32_t data)
Write to Data buffer.
Definition: txz_i2c.h:481
__STATIC_INLINE void I2C_set_ack(I2C_t *p_obj, int32_t nack)
Set Ack condition.
Definition: txz_i2c.h:528
__STATIC_INLINE void I2C_enable_interrupt(I2C_t *p_obj)
Enable Interrupt setting.
Definition: txz_i2c.h:692
__STATIC_INLINE int32_t I2C_master(I2C_t *p_obj)
Return The Master status.
Definition: txz_i2c.h:607
__STATIC_INLINE void I2C_stop_condition(I2C_t *p_obj)
Generate stop condition.
Definition: txz_i2c.h:439
uint32_t prsck
Definition: txz_i2c.h:301
void I2CS_init(I2CS_t *p_obj)
I2C Wakeup Control setting.
Definition: txz_i2c.c:319
__STATIC_INLINE void I2C_reset(I2C_t *p_obj)
I2C software reset.
Definition: txz_i2c.h:395
Initial setting structure definenition.
Definition: txz_i2c.h:321
I2C handle structure definenition.
Definition: txz_i2c.h:341
I2C_initial_setting_t init
Definition: txz_i2c.h:344
void I2CS_Primary_slave_adr_set(I2CS_t *p_obj, uint32_t adr)
Primary Slave Address setting.
Definition: txz_i2c.c:341
Initial setting structure definenition.
Definition: txz_i2c.h:331
I2CS_wup_setting_t wup
Definition: txz_i2c.h:333