adding code to allow configure MIC2555 to pull down D+/D- (still need bit bangding I2C on PB_0 PB_1)
add back port reset after get 8 bytes of device descriptor
This commit is contained in:
		| @@ -57,7 +57,7 @@ | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include "common/compiler/compiler.h" | ||||
| #include "common/binary.h" // This file is too good to not use | ||||
| #include "common/binary.h" | ||||
|  | ||||
| #define BOARD_AT86RF2XX             1 | ||||
| #define BOARD_LPCXPRESSO1347        2 | ||||
|   | ||||
| @@ -39,6 +39,8 @@ | ||||
|  | ||||
| #if BOARD == BOARD_EA4357 | ||||
|  | ||||
| #include "common/assertion.h" // TODO there is hal_debugger_ in assertion | ||||
|  | ||||
| #define UART_PORT   LPC_USART0 | ||||
|  | ||||
| #if 0 | ||||
| @@ -48,6 +50,59 @@ static const struct { | ||||
| }leds[CFG_LED_NUMBER] = { {0, 8} }; | ||||
| #endif | ||||
|  | ||||
| // MIC2555 1YML = 0101111, 0YML = 0101101 | ||||
| #define MIC255_ADDR BIN8(0101111) | ||||
|  | ||||
| static uint8_t mic255_regs_read(uint8_t regs_addr) | ||||
| { | ||||
|   uint8_t value; | ||||
|  | ||||
|   ASSERT( SUCCESS == I2C_MasterTransferData( | ||||
|       LPC_I2C0, | ||||
|       & (I2C_M_SETUP_Type) | ||||
|       { | ||||
|         .sl_addr7bit         = MIC255_ADDR, | ||||
|         .retransmissions_max = 3, | ||||
|  | ||||
|         .tx_data             = ®s_addr, | ||||
|         .tx_length           = 1, | ||||
|  | ||||
|         .rx_data             = &value, | ||||
|         .rx_length           = 1 | ||||
|       }, | ||||
|       I2C_TRANSFER_POLLING), 0xFF); | ||||
|  | ||||
|   return value; | ||||
| } | ||||
|  | ||||
| static bool mic255_regs_write(uint8_t regs_addr, uint8_t data) | ||||
| { | ||||
|   uint8_t xfer_data[2] = { regs_addr, data} ; | ||||
|  | ||||
|   ASSERT( SUCCESS == I2C_MasterTransferData( | ||||
|       LPC_I2C0, | ||||
|       & (I2C_M_SETUP_Type) | ||||
|       { | ||||
|         .sl_addr7bit         = MIC255_ADDR, | ||||
|         .retransmissions_max = 3, | ||||
|  | ||||
|         .tx_data             = xfer_data, | ||||
|         .tx_length           = 2, | ||||
|       }, | ||||
|       I2C_TRANSFER_POLLING), false); | ||||
|  | ||||
|   return true; | ||||
| } | ||||
|  | ||||
|  | ||||
| static uint16_t mic255_get_vendorid(void) | ||||
| { | ||||
|   uint8_t vendor_low  = mic255_regs_read(0); | ||||
|   uint8_t vendor_high = mic255_regs_read(1); | ||||
|  | ||||
|   return (vendor_high << 8) | vendor_low; | ||||
| } | ||||
|  | ||||
| void board_init(void) | ||||
| { | ||||
|   SystemInit(); | ||||
| @@ -61,6 +116,13 @@ void board_init(void) | ||||
|   // USB1 Power: EA4357 channel A U20 is enabled by SJ5 connected to pad 1-2, no more action required | ||||
|   scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2);	// USB1_VBUS monitor presence, must be high for bus reset occur | ||||
|  | ||||
|   // init I2C and set up MIC2555 to have 15k pull-down on USB1 D+ & D- | ||||
| //  I2C_Init(LPC_I2C0, 100000); | ||||
| //  I2C_Cmd(LPC_I2C0, ENABLE); | ||||
| // | ||||
| //  ASSERT_INT(0x058d, mic255_get_vendorid(), (void) 0); // verify vendor id | ||||
| //  ASSERT( mic255_regs_write(6, BIN8(1100)), (void) 0); // pull down D+/D- for host | ||||
|  | ||||
| #if 0 | ||||
|   // Leds Init | ||||
| 	for (uint8_t i=0; i<CFG_LED_NUMBER; i++) | ||||
|   | ||||
| @@ -60,6 +60,7 @@ | ||||
| #include "lpc43xx_cgu.h" | ||||
| #include "lpc43xx_gpio.h" | ||||
| #include "lpc43xx_uart.h" | ||||
| #include "lpc43xx_i2c.h" | ||||
|  | ||||
| #define CFG_LED_NUMBER  0 | ||||
| #define CFG_LED_ON               (1) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach