Skip to content

Commit ae22305

Browse files
committed
Corrections to I2C, style
1 parent a9633a3 commit ae22305

File tree

4 files changed

+80
-55
lines changed

4 files changed

+80
-55
lines changed

ports/stm32f4/common-hal/busio/I2C.c

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "supervisor/shared/translate.h"
3636
#include "common-hal/microcontroller/Pin.h"
3737

38+
//arrays use 0 based numbering: I2C1 is stored at index 0
3839
#define MAX_I2C 3
3940
STATIC bool reserved_i2c[MAX_I2C];
4041
STATIC bool never_reset_i2c[MAX_I2C];
@@ -93,10 +94,6 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
9394
}
9495
}
9596

96-
//Note: clock reset must be before GPIO init, due to I2C soft reboot issue
97-
i2c_clock_enable(1<<(self->sda->i2c_index - 1));
98-
reserved_i2c[self->sda->i2c_index - 1] = true;
99-
10097
//Start GPIO for each pin
10198
GPIO_InitTypeDef GPIO_InitStruct = {0};
10299
GPIO_InitStruct.Pin = pin_mask(sda->number);
@@ -113,22 +110,9 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
113110
GPIO_InitStruct.Alternate = self->scl->altfn_index;
114111
HAL_GPIO_Init(pin_port(scl->port), &GPIO_InitStruct);
115112

116-
//still needed?
117-
#ifdef I2C1
118-
__HAL_RCC_I2C1_FORCE_RESET();
119-
HAL_Delay(2);
120-
__HAL_RCC_I2C1_RELEASE_RESET();
121-
#endif
122-
#ifdef I2C2
123-
__HAL_RCC_I2C2_FORCE_RESET();
124-
HAL_Delay(2);
125-
__HAL_RCC_I2C2_RELEASE_RESET();
126-
#endif
127-
#ifdef I2C2
128-
__HAL_RCC_I2C3_FORCE_RESET();
129-
HAL_Delay(2);
130-
__HAL_RCC_I2C3_RELEASE_RESET();
131-
#endif
113+
//Note: clock reset must be before GPIO init, due to I2C soft reboot issue
114+
i2c_clock_enable(1<<(self->sda->i2c_index - 1));
115+
reserved_i2c[self->sda->i2c_index - 1] = true;
132116

133117
self->handle.Instance = I2Cx;
134118
self->handle.Init.ClockSpeed = 100000;
@@ -139,6 +123,7 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
139123
self->handle.Init.OwnAddress2 = 0;
140124
self->handle.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
141125
self->handle.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
126+
self->handle.State = HAL_I2C_STATE_RESET;
142127
if(HAL_I2C_Init(&(self->handle)) != HAL_OK) {
143128
mp_raise_RuntimeError(translate("I2C Init Error"));
144129
}

ports/stm32f4/common-hal/busio/SPI.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,12 @@
3939
// Note that any bugs introduced in this file can cause crashes at startup
4040
// for chips using external SPI flash.
4141

42-
#define MAX_SPI 6 //TODO; replace this as part of periph cleanup
43-
#define ALL_CLOCKS 0xFF
44-
4542
//arrays use 0 based numbering: SPI1 is stored at index 0
43+
#define MAX_SPI 6
4644
STATIC bool reserved_spi[MAX_SPI];
4745
STATIC bool never_reset_spi[MAX_SPI];
4846

47+
#define ALL_CLOCKS 0xFF
4948
STATIC void spi_clock_enable(uint8_t mask);
5049
STATIC void spi_clock_disable(uint8_t mask);
5150

ports/stm32f4/common-hal/busio/UART.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
#define ALL_UARTS 0xFFFF
4242

43+
//arrays use 0 based numbering: UART1 is stored at index 0
4344
STATIC bool reserved_uart[MAX_UART];
4445
int errflag; //Used to restart read halts
4546

ports/stm32f4/common-hal/pulseio/PWMOut.c

Lines changed: 72 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,6 @@ STATIC bool never_reset_tim[TIM_BANK_ARRAY_LEN];
4444
STATIC void tim_clock_enable(uint16_t mask);
4545
STATIC void tim_clock_disable(uint16_t mask);
4646

47-
//--------
48-
//STATICS
49-
//--------
50-
5147
// Get the frequency (in Hz) of the source clock for the given timer.
5248
// On STM32F405/407/415/417 there are 2 cases for how the clock freq is set.
5349
// If the APB prescaler is 1, then the timer clock is equal to its respective
@@ -91,10 +87,6 @@ STATIC void timer_get_optimal_divisors(uint32_t*period, uint32_t*prescaler,
9187
}
9288
}
9389

94-
//--------
95-
//COMMON HAL
96-
//--------
97-
9890
void pwmout_reset(void) {
9991
uint16_t never_reset_mask = 0x00;
10092
for(int i=0;i<TIM_BANK_ARRAY_LEN;i++) {
@@ -328,80 +320,128 @@ bool common_hal_pulseio_pwmout_get_variable_frequency(pulseio_pwmout_obj_t* self
328320

329321
STATIC void tim_clock_enable(uint16_t mask) {
330322
#ifdef TIM1
331-
if (mask & 1<<0) __HAL_RCC_TIM1_CLK_ENABLE();
323+
if (mask & 1<<0) {
324+
__HAL_RCC_TIM1_CLK_ENABLE();
325+
}
332326
#endif
333327
#ifdef TIM2
334-
if (mask & 1<<1) __HAL_RCC_TIM2_CLK_ENABLE();
328+
if (mask & 1<<1) {
329+
__HAL_RCC_TIM2_CLK_ENABLE();
330+
}
335331
#endif
336332
#ifdef TIM3
337-
if (mask & 1<<2) __HAL_RCC_TIM3_CLK_ENABLE();
333+
if (mask & 1<<2) {
334+
__HAL_RCC_TIM3_CLK_ENABLE();
335+
}
338336
#endif
339337
#ifdef TIM4
340-
if (mask & 1<<3) __HAL_RCC_TIM4_CLK_ENABLE();
338+
if (mask & 1<<3) {
339+
__HAL_RCC_TIM4_CLK_ENABLE();
340+
}
341341
#endif
342342
#ifdef TIM5
343-
if (mask & 1<<4) __HAL_RCC_TIM5_CLK_ENABLE();
343+
if (mask & 1<<4) {
344+
__HAL_RCC_TIM5_CLK_ENABLE();
345+
}
344346
#endif
345347
//6 and 7 are reserved ADC timers
346348
#ifdef TIM8
347-
if (mask & 1<<7) __HAL_RCC_TIM8_CLK_ENABLE();
349+
if (mask & 1<<7) {
350+
__HAL_RCC_TIM8_CLK_ENABLE();
351+
}
348352
#endif
349353
#ifdef TIM9
350-
if (mask & 1<<8) __HAL_RCC_TIM9_CLK_ENABLE();
354+
if (mask & 1<<8) {
355+
__HAL_RCC_TIM9_CLK_ENABLE();
356+
}
351357
#endif
352358
#ifdef TIM10
353-
if (mask & 1<<9) __HAL_RCC_TIM10_CLK_ENABLE();
359+
if (mask & 1<<9) {
360+
__HAL_RCC_TIM10_CLK_ENABLE();
361+
}
354362
#endif
355363
#ifdef TIM11
356-
if (mask & 1<<10) __HAL_RCC_TIM11_CLK_ENABLE();
364+
if (mask & 1<<10) {
365+
__HAL_RCC_TIM11_CLK_ENABLE();
366+
}
357367
#endif
358368
#ifdef TIM12
359-
if (mask & 1<<11) __HAL_RCC_TIM12_CLK_ENABLE();
369+
if (mask & 1<<11) {
370+
__HAL_RCC_TIM12_CLK_ENABLE();
371+
}
360372
#endif
361373
#ifdef TIM13
362-
if (mask & 1<<12) __HAL_RCC_TIM13_CLK_ENABLE();
374+
if (mask & 1<<12) {
375+
__HAL_RCC_TIM13_CLK_ENABLE();
376+
}
363377
#endif
364378
#ifdef TIM14
365-
if (mask & 1<<13) __HAL_RCC_TIM14_CLK_ENABLE();
379+
if (mask & 1<<13) {
380+
__HAL_RCC_TIM14_CLK_ENABLE();
381+
}
366382
#endif
367383
}
368384

369385
STATIC void tim_clock_disable(uint16_t mask) {
370386
#ifdef TIM1
371-
if (mask & 1<<0) __HAL_RCC_TIM1_CLK_DISABLE();
387+
if (mask & 1<<0) {
388+
__HAL_RCC_TIM1_CLK_DISABLE();
389+
}
372390
#endif
373391
#ifdef TIM2
374-
if (mask & 1<<1) __HAL_RCC_TIM2_CLK_DISABLE();
392+
if (mask & 1<<1) {
393+
__HAL_RCC_TIM2_CLK_DISABLE();
394+
}
375395
#endif
376396
#ifdef TIM3
377-
if (mask & 1<<2) __HAL_RCC_TIM3_CLK_DISABLE();
397+
if (mask & 1<<2) {
398+
__HAL_RCC_TIM3_CLK_DISABLE();
399+
}
378400
#endif
379401
#ifdef TIM4
380-
if (mask & 1<<3) __HAL_RCC_TIM4_CLK_DISABLE();
402+
if (mask & 1<<3) {
403+
__HAL_RCC_TIM4_CLK_DISABLE();
404+
}
381405
#endif
382406
#ifdef TIM5
383-
if (mask & 1<<4) __HAL_RCC_TIM5_CLK_DISABLE();
407+
if (mask & 1<<4) {
408+
__HAL_RCC_TIM5_CLK_DISABLE();
409+
}
384410
#endif
385411
//6 and 7 are reserved ADC timers
386412
#ifdef TIM8
387-
if (mask & 1<<7) __HAL_RCC_TIM8_CLK_DISABLE();
413+
if (mask & 1<<7) {
414+
__HAL_RCC_TIM8_CLK_DISABLE();
415+
}
388416
#endif
389417
#ifdef TIM9
390-
if (mask & 1<<8) __HAL_RCC_TIM9_CLK_DISABLE();
418+
if (mask & 1<<8) {
419+
__HAL_RCC_TIM9_CLK_DISABLE();
420+
}
391421
#endif
392422
#ifdef TIM10
393-
if (mask & 1<<9) __HAL_RCC_TIM10_CLK_DISABLE();
423+
if (mask & 1<<9) {
424+
__HAL_RCC_TIM10_CLK_DISABLE();
425+
}
394426
#endif
395427
#ifdef TIM11
396-
if (mask & 1<<10) __HAL_RCC_TIM11_CLK_DISABLE();
428+
if (mask & 1<<10) {
429+
__HAL_RCC_TIM11_CLK_DISABLE();
430+
}
397431
#endif
398432
#ifdef TIM12
399-
if (mask & 1<<11) __HAL_RCC_TIM12_CLK_DISABLE();
433+
if (mask & 1<<11) {
434+
__HAL_RCC_TIM12_CLK_DISABLE();
435+
}
400436
#endif
401437
#ifdef TIM13
402-
if (mask & 1<<12) __HAL_RCC_TIM13_CLK_DISABLE();
438+
if (mask & 1<<12) {
439+
__HAL_RCC_TIM13_CLK_DISABLE();
440+
}
403441
#endif
404442
#ifdef TIM14
405-
if (mask & 1<<13) __HAL_RCC_TIM14_CLK_DISABLE();
443+
if (mask & 1<<13) {
444+
__HAL_RCC_TIM14_CLK_DISABLE();
445+
}
406446
#endif
407447
}

0 commit comments

Comments
 (0)