stm32f3discovery: Moving read and write convinience functions to libopencm3.

This commit is contained in:
Federico Ruiz Ugalde
2013-06-29 19:49:05 -06:00
committed by Piotr Esden-Tempski
parent e1d5325736
commit 98b4d42846

View File

@@ -141,79 +141,6 @@ void clock_setup(void) {
// gpio_port_write(GPIOE, (I2C_ISR(i2c) & 0xFF) << 8);
// my_usart_print_int(USART2, (I2C_ISR(i2c) & 0xFF));
void write_i2c(uint32_t i2c, uint8_t i2c_addr, uint8_t reg, uint8_t size, uint8_t *data) {
int wait;
int i;
while (i2c_busy(i2c) == 1) {}
while (i2c_is_start(i2c) == 1) {}
//Setting transfer properties
i2c_set_bytes_to_transfer(i2c, size+1);
i2c_set_7bit_address(i2c, (i2c_addr & 0x7F));
i2c_set_write_transfer_dir(i2c);
i2c_enable_autoend(i2c);
//start transfer
i2c_send_start(i2c);
wait=true;
while (wait) {
if (i2c_transmit_int_status(i2c)) {
wait=false;
}
while (i2c_nack(i2c)){}
}
i2c_send_data(i2c, reg);
for (i=0; i<size; i++) {
wait=true;
while (wait) {
if (i2c_transmit_int_status(i2c)) {
wait=false;
}
while (i2c_nack(i2c)){}
}
i2c_send_data(i2c, data[i]);
}
}
void read_i2c(uint32_t i2c, uint8_t i2c_addr, uint8_t reg, uint8_t size, uint8_t *data)
{
int wait;
int i;
while (i2c_busy(i2c) == 1) {}
while (i2c_is_start(i2c) == 1) {}
/*Setting transfer properties*/
i2c_set_bytes_to_transfer(i2c, 1);
i2c_set_7bit_address(i2c, i2c_addr);
i2c_set_write_transfer_dir(i2c);
i2c_disable_autoend(i2c);
/*start transfer*/
i2c_send_start(i2c);
wait=true;
while (wait)
{
if (i2c_transmit_int_status(i2c)) {
wait=false;
}
while (i2c_nack(i2c)){} /* Some error */
}
i2c_send_data(i2c, reg);
while (i2c_is_start(i2c) == 1) {}
/*Setting transfer properties*/
i2c_set_bytes_to_transfer(i2c, size);
i2c_set_7bit_address(i2c, i2c_addr);
i2c_set_read_transfer_dir(i2c);
i2c_enable_autoend(i2c);
/*start transfer*/
i2c_send_start(i2c);
for (i=0; i<size; i++) {
while (i2c_received_data(i2c) == 0) {}
data[i]=i2c_get_data(i2c);
}
}
int main(void)
{
int i, j;