mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-16 04:45:24 +03:00
added i2cWriteBuffer() for ledring stuff
fixed ledring stuff fixed mag orientation (thanks GrootWitBaas) git-svn-id: https://afrodevices.googlecode.com/svn/trunk/baseflight@111 7c89a4a9-59b9-e629-4cfe-3a2d53b20e61
This commit is contained in:
parent
6e88b8ae30
commit
204d25d491
5 changed files with 53 additions and 33 deletions
|
@ -73,20 +73,27 @@ static void i2c_er_handler(void)
|
|||
busy = 0;
|
||||
}
|
||||
|
||||
bool i2cWrite(uint8_t addr_, uint8_t reg_, uint8_t data)
|
||||
bool i2cWriteBuffer(uint8_t addr_, uint8_t reg_, uint8_t len_, uint8_t *data)
|
||||
{
|
||||
uint8_t my_data[1];
|
||||
uint8_t i;
|
||||
uint8_t my_data[8];
|
||||
uint32_t timeout = I2C_DEFAULT_TIMEOUT;
|
||||
|
||||
addr = addr_ << 1;
|
||||
reg = reg_;
|
||||
writing = 1;
|
||||
reading = 0;
|
||||
my_data[0] = data;
|
||||
write_p = my_data;
|
||||
read_p = my_data;
|
||||
bytes = 1;
|
||||
bytes = len_;
|
||||
busy = 1;
|
||||
|
||||
// too long
|
||||
if (len_ > 7)
|
||||
return false;
|
||||
|
||||
for (i = 0; i < len_; i++)
|
||||
my_data[i] = data[i];
|
||||
|
||||
if (!(I2Cx->CR2 & I2C_IT_EVT)) { //if we are restarting the driver
|
||||
if (!(I2Cx->CR1 & 0x0100)) { // ensure sending a start
|
||||
|
@ -95,7 +102,7 @@ bool i2cWrite(uint8_t addr_, uint8_t reg_, uint8_t data)
|
|||
}
|
||||
I2C_ITConfig(I2Cx, I2C_IT_EVT | I2C_IT_ERR, ENABLE); //allow the interrupts to fire off again
|
||||
}
|
||||
|
||||
|
||||
while (busy && --timeout > 0);
|
||||
if (timeout == 0) {
|
||||
i2cErrorCount++;
|
||||
|
@ -107,6 +114,11 @@ bool i2cWrite(uint8_t addr_, uint8_t reg_, uint8_t data)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool i2cWrite(uint8_t addr_, uint8_t reg_, uint8_t data)
|
||||
{
|
||||
return i2cWriteBuffer(addr_, reg_, 1, &data);
|
||||
}
|
||||
|
||||
bool i2cRead(uint8_t addr_, uint8_t reg_, uint8_t len, uint8_t* buf)
|
||||
{
|
||||
uint32_t timeout = I2C_DEFAULT_TIMEOUT;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue