Implement DevicePropertyId_I2cMainBusBaudRate

This commit is contained in:
László Monda
2018-01-14 18:10:04 +01:00
parent 72d8e49717
commit c854e98d84
6 changed files with 19 additions and 6 deletions

View File

@@ -16,7 +16,8 @@
#include "usb_api.h"
#include "slave_scheduler.h"
uint32_t I2cMainBusBaudRateBps = I2C_MAIN_BUS_BAUD_RATE;
uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_BAUD_RATE;
uint32_t I2cMainBusActualBaudRateBps;
void InitInterruptPriorities(void)
{
@@ -81,9 +82,10 @@ void initI2cMainBus(void)
i2c_master_config_t masterConfig;
I2C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Bps = I2cMainBusBaudRateBps;
masterConfig.baudRate_Bps = I2cMainBusRequestedBaudRateBps;
uint32_t sourceClock = CLOCK_GetFreq(I2C_MAIN_BUS_CLK_SRC);
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);
I2cMainBusActualBaudRateBps = I2C_ActualBaudRate;
}
void ReinitI2cMainBus(void)

View File

@@ -7,7 +7,8 @@
// Variables:
extern uint32_t I2cMainBusBaudRateBps;
extern uint32_t I2cMainBusRequestedBaudRateBps;
extern uint32_t I2cMainBusActualBaudRateBps;
// Functions:

View File

@@ -4,6 +4,9 @@
#include "eeprom.h"
#include "versions.h"
#include "slave_drivers/kboot_driver.h"
#include "i2c.h"
#include "init_peripherals.h"
#include "fsl_i2c.h"
version_t deviceProtocolVersion = {
DEVICE_PROTOCOL_MAJOR_VERSION,
@@ -59,6 +62,11 @@ void UsbCommand_GetDeviceProperty(void)
case DevicePropertyId_CurrentKbootCommand:
GenericHidOutBuffer[1] = KbootDriverState.command;
break;
case DevicePropertyId_I2cMainBusBaudRate:
GenericHidOutBuffer[1] = I2C_MAIN_BUS_BASEADDR->F;
SetUsbTxBufferUint32(2, I2cMainBusRequestedBaudRateBps);
SetUsbTxBufferUint32(6, I2cMainBusActualBaudRateBps);
break;
default:
SetUsbTxBufferUint8(0, UsbStatusCode_GetDeviceProperty_InvalidProperty);
break;

View File

@@ -8,7 +8,8 @@
DevicePropertyId_ProtocolVersions = 1,
DevicePropertyId_ConfigSizes = 2,
DevicePropertyId_CurrentKbootCommand = 3,
} system_property_t;
DevicePropertyId_I2cMainBusBaudRate = 4,
} device_property_t;
typedef enum {
UsbStatusCode_GetDeviceProperty_InvalidProperty = 2,

View File

@@ -1,10 +1,11 @@
#include "usb_protocol_handler.h"
#include "usb_commands/usb_command_set_i2c_baud_rate.h"
#include "init_peripherals.h"
#include "fsl_i2c.h"
void UsbCommand_SetI2cBaudRate(void)
{
uint32_t i2cBaudRate = GetUsbRxBufferUint32(1);
I2cMainBusBaudRateBps = i2cBaudRate;
I2cMainBusRequestedBaudRateBps = i2cBaudRate;
ReinitI2cMainBus();
}