From f368819e8174d57570b6524863d8f077edbdbaba Mon Sep 17 00:00:00 2001 From: Karl Palsson Date: Fri, 1 Sep 2017 23:19:46 +0000 Subject: [PATCH] Update to current master library can fixes are compile tested only. I don't have those boards. f3 i2c is tested on i2c and gives the same results l1 low power demo seems to have been broken for some time already. => should be fixed, but not something I'm going to work on right now. --- examples/stm32/f1/lisa-m-1/can/can.c | 13 ++++--- examples/stm32/f1/lisa-m-2/can/can.c | 13 ++++--- examples/stm32/f1/obldc-strip/can/can.c | 7 ++-- examples/stm32/f1/obldc/can/can.c | 13 ++++--- examples/stm32/f3/stm32f3-discovery/i2c/i2c.c | 37 ++++++++----------- .../button-irq-printf-lowpower/main.c | 2 +- libopencm3 | 2 +- 7 files changed, 43 insertions(+), 44 deletions(-) diff --git a/examples/stm32/f1/lisa-m-1/can/can.c b/examples/stm32/f1/lisa-m-1/can/can.c index 3673996..9f132c3 100644 --- a/examples/stm32/f1/lisa-m-1/can/can.c +++ b/examples/stm32/f1/lisa-m-1/can/can.c @@ -18,12 +18,13 @@ * along with this library. If not, see . */ -#include -#include -#include +#include #include #include #include +#include +#include +#include struct can_tx_msg { uint32_t std_id; @@ -195,11 +196,11 @@ void sys_tick_handler(void) void usb_lp_can_rx0_isr(void) { - uint32_t id, fmi; + uint32_t id; bool ext, rtr; - uint8_t length, data[8]; + uint8_t fmi, length, data[8]; - can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data); + can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data, NULL); if (data[0] & 1) gpio_clear(GPIOA, GPIO8); diff --git a/examples/stm32/f1/lisa-m-2/can/can.c b/examples/stm32/f1/lisa-m-2/can/can.c index 5703a4f..2a54492 100644 --- a/examples/stm32/f1/lisa-m-2/can/can.c +++ b/examples/stm32/f1/lisa-m-2/can/can.c @@ -18,12 +18,13 @@ * along with this library. If not, see . */ -#include -#include -#include +#include #include #include #include +#include +#include +#include struct can_tx_msg { uint32_t std_id; @@ -195,11 +196,11 @@ void sys_tick_handler(void) void usb_lp_can_rx0_isr(void) { - uint32_t id, fmi; + uint32_t id; bool ext, rtr; - uint8_t length, data[8]; + uint8_t fmi, length, data[8]; - can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data); + can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data, NULL); if (data[0] & 1) gpio_clear(GPIOA, GPIO8); diff --git a/examples/stm32/f1/obldc-strip/can/can.c b/examples/stm32/f1/obldc-strip/can/can.c index fc21809..5e7ae2a 100644 --- a/examples/stm32/f1/obldc-strip/can/can.c +++ b/examples/stm32/f1/obldc-strip/can/can.c @@ -17,6 +17,7 @@ * along with this library. If not, see . */ +#include #include #include #include @@ -173,11 +174,11 @@ void sys_tick_handler(void) void usb_lp_can_rx0_isr(void) { - uint32_t id, fmi; + uint32_t id; bool ext, rtr; - uint8_t length, data[8]; + uint8_t fmi, length, data[8]; - can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data); + can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data, NULL); if (data[0] & 0x40) gpio_clear(GPIOB, GPIO4); diff --git a/examples/stm32/f1/obldc/can/can.c b/examples/stm32/f1/obldc/can/can.c index 5b6d4f7..5d987ba 100644 --- a/examples/stm32/f1/obldc/can/can.c +++ b/examples/stm32/f1/obldc/can/can.c @@ -18,12 +18,13 @@ * along with this library. If not, see . */ -#include -#include -#include +#include #include #include #include +#include +#include +#include struct can_tx_msg { uint32_t std_id; @@ -177,11 +178,11 @@ void sys_tick_handler(void) void usb_lp_can_rx0_isr(void) { - uint32_t id, fmi; + uint32_t id; bool ext, rtr; - uint8_t length, data[8]; + uint8_t fmi, length, data[8]; - can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data); + can_receive(CAN1, 0, false, &id, &ext, &rtr, &fmi, &length, data, NULL); if (data[0] & 1) gpio_clear(GPIOA, GPIO6); diff --git a/examples/stm32/f3/stm32f3-discovery/i2c/i2c.c b/examples/stm32/f3/stm32f3-discovery/i2c/i2c.c index 5c3176d..32307d3 100644 --- a/examples/stm32/f3/stm32f3-discovery/i2c/i2c.c +++ b/examples/stm32/f3/stm32f3-discovery/i2c/i2c.c @@ -54,14 +54,13 @@ static void i2c_setup(void) i2c_reset(I2C1); /* Setup GPIO pin GPIO_USART2_TX/GPIO9 on GPIO port A for transmit. */ gpio_mode_setup(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO6 | GPIO7); - gpio_set_af(GPIOB, GPIO_AF4, GPIO6| GPIO7); + gpio_set_af(GPIOB, GPIO_AF4, GPIO6 | GPIO7); i2c_peripheral_disable(I2C1); //configure ANFOFF DNF[3:0] in CR1 i2c_enable_analog_filter(I2C1); i2c_set_digital_filter(I2C1, I2C_CR1_DNF_DISABLED); - //Configure PRESC[3:0] SDADEL[3:0] SCLDEL[3:0] SCLH[7:0] SCLL[7:0] - // in TIMINGR - i2c_100khz_i2cclk8mhz(I2C1); + /* HSI is at 8Mhz */ + i2c_set_speed(I2C1, i2c_speed_sm_100k, 8); //configure No-Stretch CR1 (only relevant in slave mode) i2c_enable_stretching(I2C1); //addressing mode @@ -134,9 +133,6 @@ static void clock_setup(void) #define ACC_OUT_X_L_A 0x28 #define ACC_OUT_X_H_A 0x29 -// gpio_port_write(GPIOE, (I2C_ISR(i2c) & 0xFF) << 8); -// my_usart_print_int(USART2, (I2C_ISR(i2c) & 0xFF)); - int main(void) { clock_setup(); @@ -144,25 +140,24 @@ int main(void) usart_setup(); printf("Hello, we're running\n"); i2c_setup(); - /*uint8_t data[1]={(0x4 << ACC_CTRL_REG1_A_ODR_SHIFT) | ACC_CTRL_REG1_A_XEN};*/ - uint8_t data[1]={0x97}; - write_i2c(I2C1, I2C_ACC_ADDR, ACC_CTRL_REG1_A, 1, data); - data[0]=0x08; - write_i2c(I2C1, I2C_ACC_ADDR, ACC_CTRL_REG4_A, 1, data); + uint8_t cmd = ACC_CTRL_REG1_A; + uint8_t data; + i2c_transfer7(I2C1, I2C_ACC_ADDR, &cmd, 1, &data, 1); + cmd = ACC_CTRL_REG4_A; + i2c_transfer7(I2C1, I2C_ACC_ADDR, &cmd, 1, &data, 1); int16_t acc_x; while (1) { - read_i2c(I2C1, I2C_ACC_ADDR, ACC_STATUS, 1, data); - /*my_usart_print_int(USART2, data[0]);*/ - read_i2c(I2C1, I2C_ACC_ADDR, ACC_OUT_X_L_A, 1, data); - acc_x=data[0]; - read_i2c(I2C1, I2C_ACC_ADDR, ACC_OUT_X_H_A, 1, data); - acc_x|=(data[0] << 8); + cmd = ACC_STATUS; + i2c_transfer7(I2C1, I2C_ACC_ADDR, &cmd, 1, &data, 1); + cmd = ACC_OUT_X_L_A; + i2c_transfer7(I2C1, I2C_ACC_ADDR, &cmd, 1, &data, 1); + acc_x = data; + cmd = ACC_OUT_X_H_A; + i2c_transfer7(I2C1, I2C_ACC_ADDR, &cmd, 1, &data, 1); + acc_x |= ((uint16_t)data << 8); printf("data was %d\n", acc_x); - //int i; - //for (i = 0; i < 800000; i++) /* Wait a bit. */ - // __asm__("nop"); } return 0; diff --git a/examples/stm32/l1/stm32l-discovery/button-irq-printf-lowpower/main.c b/examples/stm32/l1/stm32l-discovery/button-irq-printf-lowpower/main.c index 654b52c..2d05149 100644 --- a/examples/stm32/l1/stm32l-discovery/button-irq-printf-lowpower/main.c +++ b/examples/stm32/l1/stm32l-discovery/button-irq-printf-lowpower/main.c @@ -265,7 +265,7 @@ static void reset_clocks(void) .ppre1 = RCC_CFGR_PPRE1_HCLK_NODIV, .ppre2 = RCC_CFGR_PPRE2_HCLK_NODIV, .voltage_scale = PWR_SCALE2, - .flash_config = FLASH_ACR_LATENCY_0WS, + .flash_waitstates = FLASH_ACR_LATENCY_0WS, .apb1_frequency = 4194000, .apb2_frequency = 4194000, .msi_range = RCC_ICSCR_MSIRANGE_4MHZ, diff --git a/libopencm3 b/libopencm3 index 8c74128..e3c78b8 160000 --- a/libopencm3 +++ b/libopencm3 @@ -1 +1 @@ -Subproject commit 8c74128ff6aaa2f785d8e994e82746a6e937e46c +Subproject commit e3c78b88251c68b6b87240e6ed86f825a16a18ac