summaryrefslogtreecommitdiff
path: root/docs/library
diff options
context:
space:
mode:
authorrobert-hh <robert@hammelrath.com>2021-06-18 17:12:44 +0200
committerDamien George <damien@micropython.org>2022-04-04 14:11:31 +1000
commit7a447e08b23f47fac6ebcbe5d60c4e1d0fe0d157 (patch)
treedaa938c7d64250c8fb7e10ea6b19e2bef480b300 /docs/library
parent71344c15f4ef6efc62fbaeef830fa357ee30dce0 (diff)
docs: Add quickref and docs for mimxrt, including network.LAN docs.
Diffstat (limited to 'docs/library')
-rw-r--r--docs/library/machine.PWM.rst12
-rw-r--r--docs/library/machine.SDCard.rst43
-rw-r--r--docs/library/network.LAN.rst93
-rw-r--r--docs/library/network.rst1
4 files changed, 149 insertions, 0 deletions
diff --git a/docs/library/machine.PWM.rst b/docs/library/machine.PWM.rst
index 793c074a3..4b7435577 100644
--- a/docs/library/machine.PWM.rst
+++ b/docs/library/machine.PWM.rst
@@ -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
------------------
@@ -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
diff --git a/docs/library/machine.SDCard.rst b/docs/library/machine.SDCard.rst
index b07ad37d3..cde0bd1d1 100644
--- a/docs/library/machine.SDCard.rst
+++ b/docs/library/machine.SDCard.rst
@@ -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.
diff --git a/docs/library/network.LAN.rst b/docs/library/network.LAN.rst
new file mode 100644
index 000000000..58bd61ebb
--- /dev/null
+++ b/docs/library/network.LAN.rst
@@ -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``.
diff --git a/docs/library/network.rst b/docs/library/network.rst
index 1bd7e303b..361e664b5 100644
--- a/docs/library/network.rst
+++ b/docs/library/network.rst
@@ -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
=================