From 890660938e3a5e77b7c249248e3ccf92a6f3f266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 14 Apr 2017 01:59:35 +0200 Subject: [PATCH] Fix up BusPal I2C initialization. --- right/src/buspal/bus_pal_hardware.c | 26 +++++++------------------- right/src/main.c | 6 +++--- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/right/src/buspal/bus_pal_hardware.c b/right/src/buspal/bus_pal_hardware.c index c1a1695..71811b4 100644 --- a/right/src/buspal/bus_pal_hardware.c +++ b/right/src/buspal/bus_pal_hardware.c @@ -3,6 +3,8 @@ #include "usb_device_config.h" #include "composite.h" #include "bootloader_config.h" +#include "microseconds/microseconds.h" +#include "i2c.h" bool usb_hid_poll_for_activity(const peripheral_descriptor_t *self); static status_t usb_device_full_init(const peripheral_descriptor_t *self, serial_byte_receive_func_t function); @@ -50,8 +52,6 @@ static i2c_user_config_t s_i2cUserConfig = {.slaveAddress = 0x10, //!< The slave static i2c_master_handle_t s_i2cHandle; -const static uint32_t g_i2cBaseAddr[] = I2C_BASE_ADDRS; - uint32_t g_calculatedBaudRate; bool usb_clock_init(void) @@ -435,31 +435,21 @@ uint32_t get_bus_clock(void) void init_hardware(void) { - // Disable the MPU otherwise USB cannot access the bus -// MPU->CESR = 0; -/* - SIM->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | +/* SIM->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK); // Enable pins for I2C0 on PTD8 - PTD9. PORTE->PCR[18] = PORT_PCR_MUX(4) | PORT_PCR_ODE_MASK; // I2C0_SCL is ALT2 for pin PTD9, I2C0_SCL set for open drain PORTE->PCR[19] = PORT_PCR_MUX(4) | PORT_PCR_ODE_MASK; // I2C0_SDA is ALT2 for pin PTD9, I2C0_SDA set for open drain - - microseconds_init(); */ + microseconds_init(); init_i2c(0); usb_device_full_init(&g_peripherals[0], 0); } void init_i2c(uint32_t instance) { - uint32_t baseAddr = g_i2cBaseAddr[instance]; - i2c_master_config_t config; - - I2C_MasterGetDefaultConfig(&config); - - I2C_MasterInit((I2C_Type *)baseAddr, &config, get_bus_clock()); - I2C_MasterTransferCreateHandle((I2C_Type *)baseAddr, &s_i2cHandle, NULL, NULL); + I2C_MasterTransferCreateHandle(I2C_MAIN_BUS_BASEADDR, &s_i2cHandle, NULL, NULL); } void configure_i2c_address(uint8_t address) @@ -475,7 +465,6 @@ void configure_i2c_speed(uint32_t speedkhz) status_t send_i2c_data(uint8_t *src, uint32_t writeLength) { i2c_master_transfer_t send_data; - uint32_t baseAddr = g_i2cBaseAddr[0]; send_data.slaveAddress = s_i2cUserConfig.slaveAddress; send_data.direction = kI2C_Write; send_data.data = src; @@ -484,7 +473,7 @@ status_t send_i2c_data(uint8_t *src, uint32_t writeLength) send_data.subaddressSize = 0; send_data.flags = kI2C_TransferDefaultFlag; - I2C_MasterTransferBlocking((I2C_Type *)baseAddr, &send_data); + I2C_MasterTransferBlocking(I2C_MAIN_BUS_BASEADDR, &send_data); return kStatus_Success; } @@ -492,7 +481,6 @@ status_t send_i2c_data(uint8_t *src, uint32_t writeLength) status_t receive_i2c_data(uint8_t *dest, uint32_t readLength) { i2c_master_transfer_t receive_data; - uint32_t baseAddr = g_i2cBaseAddr[0]; receive_data.slaveAddress = s_i2cUserConfig.slaveAddress; receive_data.direction = kI2C_Read; receive_data.data = dest; @@ -501,7 +489,7 @@ status_t receive_i2c_data(uint8_t *dest, uint32_t readLength) receive_data.subaddressSize = 0; receive_data.flags = kI2C_TransferDefaultFlag; - I2C_MasterTransferBlocking((I2C_Type *)baseAddr, &receive_data); + I2C_MasterTransferBlocking(I2C_MAIN_BUS_BASEADDR, &receive_data); return kStatus_Success; } diff --git a/right/src/main.c b/right/src/main.c index 78870c5..0d82270 100644 --- a/right/src/main.c +++ b/right/src/main.c @@ -88,13 +88,13 @@ void UpdateUsbReports() void main() { InitPeripherials(); InitClock(); +#ifdef ENABLE_BUSPAL + init_hardware(); +#else LedDriver_InitAllLeds(1); InitBridgeProtocolScheduler(); KeyMatrix_Init(&KeyMatrix); UpdateUsbReports(); -#ifdef ENABLE_BUSPAL - init_hardware(); -#else InitUsb(); #endif