Commit Graph

217 Commits

Author SHA1 Message Date
Sergey Vlasov
65c9752762
Update ADC driver for STM32F1xx, STM32F3xx, STM32F4xx (#12403)
* Fix default ADC_RESOLUTION for ADCv3 (and ADCv4)

Recent ChibiOS update removed ADC_CFGR1_RES_10BIT from the ADCv3 headers
(that macro should not have been there, because ADCv3 has CFGR instead of
CFGR1).  Fix the default value for ADC_RESOLUTION to use ADC_CFGR_RES_10BITS
if it is defined (that name is used for ADCv3 and ADCv4).

* Update ADC docs to match the actually used resolution

ADC driver for ChibiOS actually uses the 10-bit resolution by default
(probably to match AVR); fix the documentation accordingly.  Also add
both ADC_CFGR_RES_10BITS and ADC_CFGR1_RES_10BIT constants (these names
differ according to the ADC implementation in the particular MCU).

* Fix pinToMux() for B12 and B13 on STM32F3xx

Testing on STM32F303CCT6 revealed that the ADC mux values for B12 and
B13 pins were wrong.

* Add support for all possible analog pins on STM32F1xx

Added ADC mux values for pins A0...A7, B0, B1, C0...C5 on STM32F1xx
(they are the same at least for STM32F103x8 and larger F103 devices, and
also F102, F105, F107 families).  Actually tested on STM32F103C8T6
(therefore pins C0...C5 were not tested).

Pins F6...F10, which are present on STM32F103x[C-G] in 144-pin packages,
cannot be supported at the moment, because those pins are connected only
to ADC3, but the ChibiOS ADC driver for STM32F1xx supports only ADC1.

* Add support for all possible analog pins on STM32F4xx

Added ADC mux values for pins A0...A7, B0, B1, C0...C5 and optionally
F3...F10 (if STM32_ADC_USE_ADC3 is enabled).  These mux values are
apparently the same for all F4xx devices, except some smaller devices may
not have ADC3.

Actually tested on STM32F401CCU6, STM32F401CEU6, STM32F411CEU6 (using
various WeAct “Blackpill” boards); only pins A0...A7, B0, B1 were tested.

Pins F3...F10 are inside `#if STM32_ADC_USE_ADC3` because some devices
which don't have ADC3 also don't have the GPIOF port, therefore the code
which refers to Fx pins does not compile.

* Fix STM32F3xx ADC mux table in documentation

The ADC driver documentation had some errors in the mux table for STM32F3xx.
Fix this table to match the datasheet and the actual code (mux settings for
B12 and B13 were also tested on a real STM32F303CCT6 chip).

* Add STM32F1xx ADC pins to the documentation

* Add STM32F4xx ADC pins to the documentation
2021-04-25 11:15:37 +10:00
QMK Bot
7728b0f966 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 03:08:31 +00:00
Nick Brassel
a0089aa345
Fixup Satisfaction75 bootprocess. (#12621)
- Use normal ChibiOS I2C driver.
- Move drawing code to housekeeping -- previously it was during matrix
  scan, which gets executed during bootmagic checks. However, bootmagic
  is invoked before QWIIC subsystem is enabled, which means I2C isn't
  configured yet. All I2C calls to the OLED fail with timeouts while
  bootmagic is being checked. Housekeeping ensures this is executed once
  the system has initialised and settled.
- QWIIC OLED driver: properly clear out OLED buffer when clearing screen.
2021-04-19 13:08:01 +10:00
github-actions[bot]
67252c246c
Format code according to conventions (#12381)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-25 23:44:37 +11:00
Oleg Senchenko
b05565f368
Fix connection issue in split keyboards when slave and OLED display are connected via I2C, fix #9335 (#11487)
* In split keyboards fix connection issue when slave and OLED are connected via I2C. Fix #9335

* Revert "In split keyboards fix connection issue when slave and OLED are connected via I2C. Fix #9335"

This reverts commit 3ee639e1f3.

* In split keyboards fix connection issue when slave and OLED are connected via I2C. Fix #9335

* Update drivers/oled/oled_driver.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: osenchenko <osechenko@chiefmate.io>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-25 23:42:25 +11:00
github-actions[bot]
32f0567ca5
Format code according to conventions (#12292)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-19 16:24:36 +00:00
Xelus22
6f7466b6dd
ARM WS2812 SPI config (baudrate and circular buffer) (#12216)
* initial commit

* include circular buffer command

* add endif

* circular buffer mode

* remove untrue comment

* revamp and add documentation

* do not allow WS2812_SPI_SYNC & CIRCULAR_BUFFER
2021-03-19 19:29:18 +11:00
Drashna Jaelre
b7f2f40ae5
Set default OLED Update Interval for Split Keyboards (#12107)
Because the matrix scanning is slower for splits, in general,
the frequent updating of the OLEDs can slow down the matrix scanning.
To help prevent that, set the update interval for the OLEDs to not
update as frequently.
2021-03-05 16:26:57 -08:00
Sergey Vlasov
18a333ec6b
Add support for complementary outputs to the WS2812 PWM driver (#11988) 2021-03-02 20:26:06 -08:00
Joshua Diamond
0b63fb5e81 Merge branch 'master' into develop 2021-02-14 20:26:22 -05:00
Ryan
9ee1282019
LED Matrix: rename LED_DRIVER_LED_COUNT to DRIVER_LED_TOTAL (#11858) 2021-02-15 11:55:13 +11:00
github-actions[bot]
8e8b7113dc
Format code according to conventions (#11907)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-15 11:53:15 +11:00
Nick Brassel
f53e41ac81
Add support for analog USBPD on STM32G4xx. (#11824)
* Add support for analog USBPD on STM32G4xx.

* Split up to a list of driver types, allow for custom.
2021-02-15 08:56:13 +11:00
github-actions[bot]
c27a778281
Format code according to conventions (#11905)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-15 06:55:43 +11:00
QMK Bot
39ed48f7a7 Merge remote-tracking branch 'origin/master' into develop 2021-02-08 21:33:45 +00:00
Sergey Vlasov
627ceebef3
ws2812: Fix number of nops for AVR at 8 MHz (#9559)
* ws2812: Fix number of nops for AVR at 8 MHz

When trying to calculate the number of nops for AVR running at 8 MHz,
the value of `w3` is expected to be negative; however, because `F_CPU`
is defined in tmk_core/avr.mk with the `UL` suffix, the preprocessor
performs its calculations using `unsigned long`, getting a very large
positive number instead of the expected negative number; this then
results in generating code with a huge number of nops.  Fix the broken
calculations by performing a comparison before subtraction, so that the
unsigned number wraparound does not occur.

The keyboard which triggers the problem is `handwired/promethium`; the
buggy code silently compiles, but the resulting timings would be
completely wrong.

* ws2812: Clean up the code after the 8 MHz fix

Remove old code which was unsuccessfully trying to clamp negative w1, w2
and w3 values to 0, and set w1_nops, w2_nops and w3_nops directly.
2021-02-09 08:33:04 +11:00
Drashna Jaelre
6b9a7e21e9
Include stdbool.h in uart.h (#11728) 2021-01-30 18:35:16 +11:00
Dasky
d92ffd1157
Adds AT90USB162 support (#11570)
* at90usb162 support

* fix missing bracket

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-29 19:53:56 -08:00
Ryan
30b46fad57
UART driver refactor (#11637) 2021-01-27 17:42:49 +11:00
QMK Bot
296552e358 Merge remote-tracking branch 'origin/master' into develop 2021-01-15 21:43:07 +00:00
kb-elmo
3d70766327
Add BGR byte order for WS2812 drivers (#11562)
* add byte order bgr for ws2812

* update docs for driver change

* Update ws2812_driver.md

* Update docs/ws2812_driver.md

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-16 08:42:30 +11:00
Nick Brassel
34446b79d7
Split up QWIIC_ENABLE to use QWIIC_DRIVERS as well, with yes/no for enable flag. (#11426) 2021-01-04 08:45:43 +11:00
Nick Brassel
271c0cf136 Merge remote-tracking branch 'upstream/master' into develop 2021-01-03 15:26:43 +11:00
Ryan
f3ac792c09
Align ChibiOS spi_master behaviour with AVR (#11404)
* Align ChibiOS spi_master behaviour with AVR

* Rollback `spi_transmit()` and `spi_receive()` to preserve DMA
2021-01-03 14:53:53 +11:00
Aldehir Rojas
4f2f21dc05
Rewrite APA102 support (#10894)
* Rewrite APA102 support

The APA102 source was broken by commit 16a15c1cfc as it did not include the
quantum header. This commit addresses that, as well as other issues with
transferring bytes over the SPI interface, i.e. it was not setting the
clock pin back to low after sending a bit.

The deviation when sending the end frame is kept, but updated to the
latest from the referenced project.

Finally, these changes expose the global LED brightness parameter
of the APA102. Brightness values are configurable through
`APA102_DEFAULT_BRIGHTNESS` and `APA102_MAX_BRIGHTNESS`.

* Fix typo in led brightness extern

* Move driver out of AVR directory and add delay for ARM

* Experimental APA102 support on AVR and ARM

Co-authored-by: Alde Rojas <hello@alde.io>

* Refactor apa102_send_byte() calls to a loop

* Implement io_wait function for ARM

* Move APA102 drivers to own directory, fix copyright notice

* Add APA102 keymap to handwired/onekey

* Simplify RGBLIGHT_ENABLE/DRIVER option handling

Co-authored-by: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com>
2020-12-30 00:28:49 +00:00
QMK Bot
99d6349978 Merge remote-tracking branch 'origin/master' into develop 2020-12-27 17:37:04 +00:00
Ryan
1b7b72c0e9
Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
QMK Bot
0b37c0dfa0 Merge remote-tracking branch 'origin/master' into develop 2020-12-26 04:56:43 +00:00
Ryan
1d1d5da43f
Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
QMK Bot
06f9297f94 Merge remote-tracking branch 'origin/master' into develop 2020-12-18 17:29:08 +00:00
Joel Challis
a9f7d4dccc
Various compilation fixes for avr-gcc 10 (#9269) 2020-12-18 17:28:29 +00:00
fauxpark
7797070b37 Merge remote-tracking branch 'upstream/master' into develop 2020-12-18 02:15:28 +11:00
Ryan
6ea4b06f9f
Run cformat and dos2unix manually (#11235) 2020-12-17 14:06:30 +00:00
QMK Bot
2e0f2025bd Merge remote-tracking branch 'origin/master' into develop 2020-12-16 03:27:52 +00:00
Ryan
9366ed7282
Normalise include statements in keyboard code (#11185) 2020-12-16 14:27:23 +11:00
QMK Bot
25a1cb5a15 Merge remote-tracking branch 'origin/master' into develop 2020-12-13 18:51:35 +00:00
Xelus22
70f40339c2
Add i2c 24LC64 eeprom (#11200)
* add 24LC64 eeprom

* docs update

* Update docs/eeprom_driver.md

Co-authored-by: Joel Challis <git@zvecr.com>

Co-authored-by: Joel Challis <git@zvecr.com>
2020-12-14 05:50:50 +11:00
QMK Bot
fdfcce57e1 Merge remote-tracking branch 'origin/master' into develop 2020-12-11 02:46:19 +00:00
Ryan
501f2fdef1
Normalise include statements in core code (#11153)
* Normalise include statements in core code

* Missed one
2020-12-11 13:45:24 +11:00
QMK Bot
7043561459 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:18:31 +00:00
Xelus22
6b1f96dca8
Update is31fl3731-simple (#7610)
* update simple

* Update is31fl3731-simple.c
2020-12-06 17:18:02 +11:00
QMK Bot
e199fb6190 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:16:19 +00:00
Josh Hinnebusch
c59f87a5d7
add definition WS2812_BYTE_ORDER to fix RGB LED issues (#10184)
* add define for WS2812B-2020 to fix RGB issues

* update driver doc

* add WS2812_BYTE_ORDER definition to correct RGB byte issues

* add definition variable thing

* update per PR request

* update per PR reqs

* update per PR request

* inital changes

* move defines to color.h and add rgbw incase

* Update docs/ws2812_driver.md

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: hineybush <hineybushkeyboards@gmail.com>
Co-authored-by: Xelus22 <preyas22@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-12-06 17:15:48 +11:00
QMK Bot
2c121b3d8e Merge remote-tracking branch 'origin/master' into develop 2020-12-06 01:54:14 +00:00
XScorpion2
cba76092eb
Added OLED Initialized checks (#11129) 2020-12-06 12:53:47 +11:00
QMK Bot
bb79fbaccf Merge remote-tracking branch 'origin/master' into develop 2020-12-06 01:50:41 +00:00
Dimitris Papavasiliou
5cf70f3993
Fix error handling in SPI master. (#11122)
Co-authored-by: Dimitris Papavasiliou <dpapavas@gmail.com>
2020-12-06 12:50:02 +11:00
XScorpion2
990d5189d1
Configurable serial usart timeout (#11057) 2020-11-30 03:29:35 -08:00
James Young
c66df16644
2020 November 28 Breaking Changes Update (#11053)
* Branch point for 2020 November 28 Breaking Change                                                

* Remove matrix_col_t to allow MATRIX_ROWS > 32 (#10183)                                           

* Add support for soft serial to ATmega32U2 (#10204)                                               

* Change MIDI velocity implementation to allow direct control of velocity value (#9940)            

* Add ability to build a subset of all keyboards based on platform.                                

* Actually use eeprom_driver_init().                                                               

* Make bootloader_jump weak for ChibiOS. (#10417)                                                  

* Joystick 16-bit support (#10439)                                                                 

* Per-encoder resolutions (#10259)                                                                 

* Share button state from mousekey to pointing_device (#10179)                                     

* Add hotfix for chibios keyboards not wake (#10088)                                               

* Add advanced/efficient RGB Matrix Indicators (#8564)                                             

* Naming change.                                                                                   

* Support for STM32 GPIOF,G,H,I,J,K (#10206)                                                       

* Add milc as a dependency and remove the installed milc (#10563)                                  

* ChibiOS upgrade: early init conversions (#10214)                                                 

* ChibiOS upgrade: configuration file migrator (#9952)                                             

* Haptic and solenoid cleanup (#9700)                                                              

* XD75 cleanup (#10524)                                                                            

* OLED display update interval support (#10388)                                                    

* Add definition based on currently-selected serial driver. (#10716)                               

* New feature: Retro Tapping per key (#10622)                                                      

* Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638)             

* Add housekeeping task callbacks so that keyboards/keymaps are capable of executing code for each main loop iteration. (#10530)

* Rescale both ChibiOS and AVR backlighting.                                                       

* Reduce Helix keyboard build variation (#8669)                                                    

* Minor change to behavior allowing display updates to continue between task ticks (#10750)        

* Some GPIO manipulations in matrix.c change to atomic. (#10491)                                   

* qmk cformat (#10767)                                                                             

* [Keyboard] Update the Speedo firmware for v3.0 (#10657)                                          

* Maartenwut/Maarten namechange to evyd13/Evy (#10274)                                             

* [quantum] combine repeated lines of code (#10837)                                                

* Add step sequencer feature (#9703)                                                               

* aeboards/ext65 refactor (#10820)                                                                 

* Refactor xelus/dawn60 for Rev2 later (#10584)                                                    

* add DEBUG_MATRIX_SCAN_RATE_ENABLE to common_features.mk (#10824)                                 

* [Core] Added `add_oneshot_mods` & `del_oneshot_mods` (#10549)                                    

* update chibios os usb for the otg driver (#8893)                                                 

* Remove HD44780 References, Part 4 (#10735)                                                       

* [Keyboard] Add Valor FRL TKL (+refactor) (#10512)                                                

* Fix cursor position bug in oled_write_raw functions (#10800)                                     

* Fixup version.h writing when using SKIP_VERSION=yes (#10972)                                     

* Allow for certain code in the codebase assuming length of string. (#10974)                       

* Add AT90USB support for serial.c (#10706)                                                        

* Auto shift: support repeats and early registration (#9826)                                       

* Rename ledmatrix.h to match .c file (#7949)                                                      

* Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231)                                        

* Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840)                                        

* Merge point for 2020 Nov 28 Breaking Change
2020-11-28 12:02:18 -08:00
Ryan
3afe0ea9b9
ST7565 tidyup (#10907) 2020-11-26 23:44:17 +11:00