Skip to content

Commit

Permalink
mimxrt/bootloader: Merge latest changes.
Browse files Browse the repository at this point in the history
Merge branch 'master' into mimxrt/bootloader.
  • Loading branch information
alphaFred committed Apr 4, 2022
2 parents 807816f + 5682595 commit e02427c
Show file tree
Hide file tree
Showing 40 changed files with 2,552 additions and 70 deletions.
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ MicroPython documentation and references
esp8266/quickref.rst
esp32/quickref.rst
rp2/quickref.rst
mimxrt/quickref.rst
wipy/quickref.rst
unix/quickref.rst
zephyr/quickref.rst
7 changes: 7 additions & 0 deletions docs/library/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,13 @@ the following libraries.
network.rst
uctypes.rst

The following libraries provide drivers for hardware components.

.. toctree::
:maxdepth: 1

wm8960.rst


Port-specific libraries
-----------------------
Expand Down
7 changes: 7 additions & 0 deletions docs/library/machine.I2S.rst
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,13 @@ uasyncio::
sreader = uasyncio.StreamReader(audio_in)
num_read = await sreader.readinto(buf)

Some codec devices like the WM8960 or SGTL5000 require separate initialization
before they can operate with the I2S class. For these, separate drivers are
supplied, which also offer methods for controlling volume, audio processing and
other things. For these drivers see:

- :ref:`wm8960`

Constructor
-----------

Expand Down
12 changes: 12 additions & 0 deletions docs/library/machine.PWM.rst
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,13 @@ Methods

With a single *value* argument the pulse width is set to that value.

Specific PWM class implementations
----------------------------------

The following concrete class(es) implement enhancements to the PWM class.

| :ref:`pyb.Timer for PyBoard <pyb.Timer>`
Limitations of PWM
------------------

Expand All @@ -90,6 +97,11 @@ Limitations of PWM
80000000 / 267 = 299625.5 Hz, not 300kHz. If the divider is set to 266 then
the PWM frequency will be 80000000 / 266 = 300751.9 Hz, but again not 300kHz.

Some ports like the RP2040 one use a fractional divider, which allow a finer
granularity of the frequency at higher frequencies by switching the PWM
pulse duration between two adjacent values, such that the resulting average
frequency is more close to the intended one, at the cost of spectral purity.

* The duty cycle has the same discrete nature and its absolute accuracy is not
achievable. On most hardware platforms the duty will be applied at the next
frequency period. Therefore, you should wait more than "1/frequency" before
Expand Down
43 changes: 43 additions & 0 deletions docs/library/machine.SDCard.rst
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,46 @@ You can set the pins used for SPI access by passing a tuple as the

*Note:* The current cc3200 SD card implementation names the this class
:class:`machine.SD` rather than :class:`machine.SDCard` .

mimxrt
``````

The SDCard module for the mimxrt port only supports access via dedicated SD/MMC
peripheral (USDHC) in 4-bit mode with 50MHz clock frequency exclusively.
Unfortunately the MIMXRT1011 controller does not support the USDHC peripheral.
Hence this controller does not feature the ``machine.SDCard`` module.

Due to the decision to only support 4-bit mode with 50MHz clock frequency the
interface has been simplified, and the constructor signature is:

.. class:: SDCard(slot=1)
:noindex:

The pins used for the USDHC peripheral have to be configured in ``mpconfigboard.h``.
Most of the controllers supported by the mimxrt port provide up to two USDHC
peripherals. Therefore the pin configuration is performed using the macro
``MICROPY_USDHCx`` with x being 1 or 2 respectively.

The following shows an example configuration for USDHC1::

#define MICROPY_USDHC1 \
{ \
.cmd = { GPIO_SD_B0_02_USDHC1_CMD}, \
.clk = { GPIO_SD_B0_03_USDHC1_CLK }, \
.cd_b = { GPIO_SD_B0_06_USDHC1_CD_B },\
.data0 = { GPIO_SD_B0_04_USDHC1_DATA0 },\
.data1 = { GPIO_SD_B0_05_USDHC1_DATA1 },\
.data2 = { GPIO_SD_B0_00_USDHC1_DATA2 },\
.data3 = { GPIO_SD_B0_01_USDHC1_DATA3 },\
}

If the card detect pin is not used (cb_b pin) then the respective entry has to be
filled with the following dummy value::

#define USDHC_DUMMY_PIN NULL , 0

Based on the definition of macro ``MICROPY_USDHC1`` and/or ``MICROPY_USDHC2``
the ``machine.SDCard`` module either supports one or two slots. If only one of
the defines is provided, calling ``machine.SDCard()`` or ``machine.SDCard(1)``
will return an instance using the respective USDHC peripheral. When both macros
are defined, calling ``machine.SDCard(2)`` returns an instance using USDHC2.
93 changes: 93 additions & 0 deletions docs/library/network.LAN.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
.. currentmodule:: network
.. _network.LAN:

class LAN -- control an Ethernet module
=======================================

This class allows you to control the Ethernet interface. The PHY hardware type is board-specific.

Example usage::

import network
nic = network.LAN(0)
print(nic.ifconfig())

# now use socket as usual
...


Constructors
------------

.. class:: LAN(id, *, phy_type=<board_default>, phy_addr=<board_default>, phy_clock=<board_default>)

Create a LAN driver object, initialise the LAN module using the given
PHY driver name, and return the LAN object.

Arguments are:

- *id* is the number of the Ethernet port, either 0 or 1.
- *phy_type* is the name of the PHY driver. For most board the on-board PHY has to be used and
is the default. Suitable values are port specific.
- *phy_addr* specifies the address of the PHY interface. As with *phy_type*, the hardwired value has
to be used for most boards and that value is the default.
- *phy_clock* specifies, whether the data clock is provided by the Ethernet controller or the PYH interface.
The default value is the one that matches the board. If set to ``True``, the clock is driven by the
Ethernet controller, otherwise by the PHY interface.

For example, with the Seeed Arch Mix board you can use::

nic = LAN(0, phy_type=LAN.PHY_LAN8720, phy_addr=2, phy_clock=False)

Methods
-------

.. method:: LAN.active([state])

With a parameter, it sets the interface active if *state* is true, otherwise it
sets it inactive.
Without a parameter, it returns the state.

.. method:: LAN.isconnected()

Returns ``True`` if the physical Ethernet link is connected and up.
Returns ``False`` otherwise.

.. method:: LAN.status()

Returns the LAN status.

.. method:: LAN.ifconfig([(ip, subnet, gateway, dns)])

Get/set IP address, subnet mask, gateway and DNS.

When called with no arguments, this method returns a 4-tuple with the above information.

To set the above values, pass a 4-tuple with the required information. For example::

nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))

.. method:: LAN.config(config_parameters)

Sets or gets parameters of the LAN interface. The only parameter that can be
retrieved is the MAC address, using::

mac = LAN.config("mac")

The parameters that can be set are:

- ``trace=n`` sets trace levels; suitable values are:

- 2: trace TX
- 4: trace RX
- 8: full trace

- ``low_power=bool`` sets or clears low power mode, valid values being ``False``
or ``True``.


Specific LAN class implementations
----------------------------------

On the mimxrt port, suitable values for the *phy_type* constructor argument are:
``PHY_KSZ8081``, ``PHY_DP83825``, ``PHY_DP83848``, ``PHY_LAN8720``, ``PHY_RTL8211F``.
1 change: 1 addition & 0 deletions docs/library/network.rst
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ provide a way to control networking interfaces of various kinds.
network.WLANWiPy.rst
network.CC3K.rst
network.WIZNET5K.rst
network.LAN.rst

Network functions
=================
Expand Down
Loading

0 comments on commit e02427c

Please sign in to comment.