summaryrefslogtreecommitdiff
path: root/stmhal/uart.c
AgeCommit message (Collapse)Author
2017-07-31all: Use the name MicroPython consistently in commentsAlexander Steffen
There were several different spellings of MicroPython present in comments, when there should be only one.
2017-07-19all: Remove trailing spaces, per coding conventions.Damien George
2017-06-15stmhal: Make error messages more consistent across peripherals.Damien George
2017-06-15all: Make more use of mp_raise_{msg,TypeError,ValueError} helpers.Damien George
2017-05-06stmhal: Convert all module and method tables to use MP_ROM macros.Damien George
2017-02-16py: Add iter_buf to getiter type method.Damien George
Allows to iterate over the following without allocating on the heap: - tuple - list - string, bytes - bytearray, array - dict (not dict.keys, dict.values, dict.items) - set, frozenset Allows to call the following without heap memory: - all, any, min, max, sum TODO: still need to allocate stack memory in bytecode for iter_buf.
2017-02-06stmhal: Use MICROPY_EVENT_POLL_HOOK instead of __WFI where appropriate.Damien George
2017-01-04all: Consistently update signatures of .make_new and .call methods.Paul Sokolovsky
Otherwise, they serve reoccurring source of copy-paste mistakes and breaking nanbox build.
2016-12-28stmhal/uart: Increase inter-character timeout by 1ms.Damien George
Sys-tick resolution is 1ms and a value of 2 will give a delay between 1ms and 2ms (whereas a value of 1 gives a delay between 0ms and 1ms, which is too short).
2016-12-28stmhal/uart: Provide a custom function to transmit over UART.Damien George
The HAL_UART_Transmit function has changed in the latest HAL version such that the Timeout is a timeout for the entire function, rather than a timeout between characters as it was before. The HAL function also does not allow one to reliably tell how many characters were sent before the timeout (if a timeout occurred). This patch provides a custom function to do UART transmission, completely replacing the HAL version, to fix the above-mentioned issues.
2016-12-05stmhal/uart: Add check that UART id is valid for the given board.Damien George
Previous to this patch trying to construct, but not init, a UART that didn't exist on the target board would actually succeed. Only when initialising the UART would it then raise an exception that the UART does not exist. This patch adds an explicit check that the constructed UART does in fact exist for the given board.
2016-12-05stmhal/uart: Add support for UART7 and UART8 on F7 MCUs.Damien George
2016-12-05stmhal: Refactor UART configuration to use pin objects.Rami Ali
This follows the pattern of other peripherals (I2C, SPI) to specify the pins using pin objects instead of a pair of GPIO port and pin number. It makes it easier to customise the UART pins for a particular board.
2016-12-02py/stream: Move ad-hoc ioctl constants to stream.h and rename them.Damien George
The constants MP_IOCTL_POLL_xxx, which were stmhal-specific, are moved from stmhal/pybioctl.h (now deleted) to py/stream.h. And they are renamed to MP_STREAM_POLL_xxx to be consistent with other such constants. All uses of these constants have been updated.
2016-11-14all: Remove readall() method, which is equivalent to read() w/o args.Paul Sokolovsky
Its addition was due to an early exploration on how to add CPython-like stream interface. It's clear that it's not needed and just takes up bytes in all ports.
2016-06-18all: Rename mp_obj_type_t::stream_p to protocol.Paul Sokolovsky
It's now used for more than just stream protocol (e.g. pin protocol), so don't use false names.
2016-06-03stmhal/uart.c: Fix wrong baudrate calculation for stm32l4 series.Tobias Badertscher
2016-05-10stmhal: Convert to use internal errno symbols; enable uerrno module.Damien George
2016-04-17stmhal: L4: Modify uart.c to support L4 MCU.Damien George
L4 does not have UART6, and has similar registers to the F7. Original patch was authored by Tobias Badertscher / @tobbad, but it was reworked to split UART edits from USB edits.
2016-04-13stmhal: Properly handle RTS/CTS flow control for buf/unbuf transfers.Peter Hinch
Fixes issues #1912 and #1913. UART documentation is also updated.
2016-01-11py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*.Damien George
The first argument to the type.make_new method is naturally a uPy type, and all uses of this argument cast it directly to a pointer to a type structure. So it makes sense to just have it a pointer to a type from the very beginning (and a const pointer at that). This patch makes such a change, and removes all unnecessary casting to/from mp_obj_t.
2015-12-12stmhal: Make uart init use struct instead of array for parsing args.Damien George
This makes it much easier to understand which arg is which, less error prone, and simpler to add a new arg.
2015-12-04stmhal: Fix uart off by 1 circular buffer size.Ryan Shaw
2015-11-30stmhal: Make uart.write() function correctly for timeout=0.Damien George
In non-blocking mode (timeout=0), uart.write() can now transmit all of its data without raising an exception. uart.read() also works correctly in this mode. As part of this patch, timout_char now has a minimum value which is long enough to transfer 1 character. Addresses issue #1533.
2015-11-30stmhal: uart.any() function now returns number of bytes available.Ryan Shaw
2015-11-26stmhal: Allow make DEBUG=1 to buildDave Hylands
2015-11-01stmhal: Add symbolic #defines for interrupt levels in irq.h.Dave Curtis
2015-10-31all: Add py/mphal.h and use it in all ports.Damien George
py/mphal.h contains declarations for generic mp_hal_XXX functions, such as stdio and delay/ticks, which ports should provide definitions for. A port will also provide mphalport.h with further HAL declarations.
2015-10-20stmhal/uart: If char is not received within timeout, return EAGAIN error.Paul Sokolovsky
Instead of return 0, which means EOF. There's no good way to detect EOF on continuously active bus like UART, and treat timeout as just temporary unvailability of data. .read() method of UART object will return None in this case (instead of 0, which again measn EOF). This is fully compliant with unix port.
2015-08-07stamhal: Add definitions for MCU_SERIES_F4 and MCU_SERIES_F7Dave Hylands
2015-08-03stmhal: Add support for USART1 and conditional pins in make-pins.py.Damien George
Thanks to Dave Hylands for the patch.
2015-08-03stmhal: Add better support for UART having Tx and Rx on different ports.Damien George
Thanks to Dave Hylands for the patch.
2015-08-03stmhal: Factor GPIO clock enable logic into mp_hal_gpio_clock_enable.Damien George
Extracted GPIO clock enable logic into mp_hal_gpio_clock_enable and called from anyplace which might need to use GPIO functions on ports other than A-D. Thanks to Dave Hylands for the patch.
2015-07-30stmhal: Add STM32F7DISC and associated changes.Dave Hylands
2015-06-01stmhal: Add support for UART5Dave Hylands
I tested this on my CERB40 board and it seems to be working fine.
2015-05-27stmhal: Remove PYBVxx defines and use config vars for UART/CAN names.Damien George
Now all stmhal-based boards can name their peripherals (if they want) to any string.
2015-05-03stmhal: Allow to configure UART pins completely via mpconfigboard.h.Eero af Heurlin
2015-04-18stmhal: Exclude code for UARTs that don't exist in hardware.Damien George
2015-04-16py: Overhaul and simplify printf/pfenv mechanism.Damien George
Previous to this patch the printing mechanism was a bit of a tangled mess. This patch attempts to consolidate printing into one interface. All (non-debug) printing now uses the mp_print* family of functions, mainly mp_printf. All these functions take an mp_print_t structure as their first argument, and this structure defines the printing backend through the "print_strn" function of said structure. Printing from the uPy core can reach the platform-defined print code via two paths: either through mp_sys_stdout_obj (defined pert port) in conjunction with mp_stream_write; or through the mp_plat_print structure which uses the MP_PLAT_PRINT_STRN macro to define how string are printed on the platform. The former is only used when MICROPY_PY_IO is defined. With this new scheme printing is generally more efficient (less layers to go through, less arguments to pass), and, given an mp_print_t* structure, one can call mp_print_str for efficiency instead of mp_printf("%s", ...). Code size is also reduced by around 200 bytes on Thumb2 archs.
2015-02-22stmhal: For UART, check that baudrate is within 5% of desired value.Damien George
Also includes documentation about minimum baudrate. Addresses issue #1090.
2015-02-13stmhal: Add uart.sendbreak() method, to send a break condition.Damien George
2015-01-07stmhal: Collect all root pointers together in 1 place.Damien George
A GC in stmhal port now only scans true root pointers, not entire BSS. This reduces base GC time from 1700ms to 900ms.
2015-01-01stmhal: Prefix includes with py/; remove need for -I../py.Damien George
2014-11-17stream: Convert .ioctl() to take fixed number of args.Paul Sokolovsky
This is more efficient, as allows to use register calling convention. If needed, a structure pointer can be passed as argument to pass more data.
2014-10-31stmhal: Fix UART so bits counts number of data bits, not incl parity.Damien George
Addresses issue #950.
2014-10-31stmhal: Implement support for RTS/CTS hardware flow control in UART.Damien George
This is experimental support. API is subject to changes. RTS/CTS available on UART(2) and UART(3) only. Use as: uart = pyb.UART(2, 9600, flow=pyb.UART.RTS | pyb.UART.CTS)
2014-10-24stmhal: Use stream's readinto.Damien George
2014-10-23stmhal: Use OSError with POSIX error code for HAL errors.Damien George
Addresses issue #921.
2014-10-21stmhal: Overhaul UART class to use read/write, and improve it.v1.3.4Damien George
UART object now uses a stream-like interface: read, readall, readline, readinto, readchar, write, writechar. Timeouts are configured when the UART object is initialised, using timeout and timeout_char keyword args. The object includes optional read buffering, using interrupts. You can set the buffer size dynamically using read_buf_len keyword arg. A size of 0 disables buffering.
2014-10-02stmhal: Set is_enabled=false when creating UART object; fix doc typo.Damien George