diff --git a/docs/Advanced_development/zh/QuecPythonBus/LED.md b/docs/Advanced_development/zh/QuecPythonBus/LED.md index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d80c48b19d3a3ec3675c63f2a1e3974deb1476f5 100644 --- a/docs/Advanced_development/zh/QuecPythonBus/LED.md +++ b/docs/Advanced_development/zh/QuecPythonBus/LED.md @@ -0,0 +1,130 @@ +# 跑马灯实验 + +## 修订历史 + +| 版本 | 日期 | 作者 | 变更表述 | +| ---- | ---------- | ---- | -------- | +| 1.0 | 2021-09-15 | Grey | 初版 | + +文档主要介绍如何实现 GPIO控制外部器件,从硬件设计和软件设计两方面讲解,通过阅读本文,您将学会查看硬件连接关系、代码编写思路和验证实验理论。 + +有关API详解请参考 [QuecPython-machine - PIN](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pin) + + + +## 硬件描述 + +GPIO是最常用的外设之一,可以输出高电平和低电平,以便控制外部的器件。如下图标有GPIO 的 Pin 就是我们想要找的引脚。 + +![media_PIN_1](media/media_PIN_1.jpg) + + + +## 软件设计 + +首先确定要控制硬件的哪个引脚,然后通过官网的 API 类库找到对应的 GPIO编号 。详解请参考 [QuecPython-machine - PIN](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pin) + +例: ![media_PIN_2](media/media_PIN_2.jpg)EC600S/N的引脚10为GPIO1。 + +开始编写代码,在.py 文件里加入下面代码,用于对 GPIO 读写: + +```python +IOdictRead = {} # 记录已经初始化的 GPIO 口 +IOdictWrite = {} # 记录已经初始化的 GPIO 口 +def GPIO_Read(gpioX, Pull=Pin.PULL_DISABLE, level=1): + if IOdictWrite.get(gpioX, None): + del IOdictWrite[gpioX] + gpioIO = IOdictRead.get(gpioX, None) + if gpioIO: + return gpioIO.read() + else: + IOdictRead[gpioX] = (Pin(gpioX, Pin.IN, Pull, level)) + gpioIO = IOdictRead.get(gpioX, None) + return gpioIO.read() +def GPIO_Write(gpioX, level, Pull=Pin.PULL_DISABLE): + if IOdictRead.get(gpioX, None): + del IOdictRead[gpioX] + gpioIO = IOdictWrite.get(gpioX, None) + if gpioIO: + gpioIO.write(level) + else: + IOdictWrite[gpioX] = (Pin(gpioX, Pin.OUT, Pull, level)) + gpioIO = IOdictWrite.get(gpioX, None) + gpioIO.write(level) +``` + +定义需要控制的 GPIO 别名: + +```python +from machine import Pin + +LED1 = Pin.GPIO1 # 定义LED引脚 +LED2 = Pin.GPIO2 # 定义LED引脚 +LED3 = Pin.GPIO3 # 定义LED引脚 +LED4 = Pin.GPIO4 # 定义LED引脚 +LED5 = Pin.GPIO5 # 定义LED引脚 +``` + +对某一个引脚实现控制: + +```python +def IO_On(gpioX): # 某个引脚置 0 + GPIO_Write(gpioX, 0) # 调用写函数 +def IO_Off(gpioX): # 某个引脚置 1 + GPIO_Write(gpioX, 1) # 调用写函数 + +``` + +对全部引脚实现控制: + +```python +def IO_All_Off(): # 全部引脚置 1 + IO_Off(LED1) + IO_Off(LED2) + IO_Off(LED3) + IO_Off(LED4) + IO_Off(LED5) + +``` + +完成上面的代码后,我们可以编写主程序 +main(),主要实现思路,亮-灭-亮-灭,如此循环;仅点亮 LED1,延时 200 毫秒,看到LED1 亮,LED1 灭;仅点亮 LED2,延时 200 毫秒,LED2 灭;仅点亮 LED3,延时200 毫秒,LED3 灭;这样就能看到 LED 轮流点亮的效果。 + +```python +import utime + +def main(): + while True: + IO_All_Off() # 灭 IO_On(LED1) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED2) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED3) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED4) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED5) # 亮 + utime.sleep_ms(200) # 延时 +``` + +接下来就可以下载验证了,python 代码不需要编译,直接通过 QPYcom 工具把.py文件下载到模块中运行。 + + + +## 下载验证 + +下载.py 文件到模组运行: + +![media_PIN_3](media/media_PIN_3.jpg) + +下载之后,看到 LED 逐个点亮,有流水灯的效果: + +![media_PIN_4](media/media_PIN_4.jpg) + + + +## 配套代码 + + +下载代码 + diff --git a/docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py b/docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py new file mode 100644 index 0000000000000000000000000000000000000000..80821f9f2b9f0285a3d728d004a4b991497cc57a --- /dev/null +++ b/docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py @@ -0,0 +1,80 @@ +# 实验1: 跑马灯 +# API资料参考连接: https://python.quectel.com/wiki/#/zh-cn/api/?id=pin + + +from machine import Pin +import utime + + +IOdictRead = {} # 记录已经初始化的GPIO口 +IOdictWrite = {} # 记录已经初始化的GPIO口 + + +def GPIO_Read(gpioX, Pull=Pin.PULL_DISABLE, level=1): + if IOdictWrite.get(gpioX, None): + del IOdictWrite[gpioX] + gpioIO = IOdictRead.get(gpioX, None) + if gpioIO: + return gpioIO.read() + else: + IOdictRead[gpioX] = (Pin(gpioX, Pin.IN, Pull, level)) + gpioIO = IOdictRead.get(gpioX, None) + return gpioIO.read() + + +def GPIO_Write(gpioX, level, Pull=Pin.PULL_DISABLE): + if IOdictRead.get(gpioX, None): + del IOdictRead[gpioX] + gpioIO = IOdictWrite.get(gpioX, None) + if gpioIO: + gpioIO.write(level) + else: + IOdictWrite[gpioX] = (Pin(gpioX, Pin.OUT, Pull, level)) + gpioIO = IOdictWrite.get(gpioX, None) + gpioIO.write(level) + + +LED1 = Pin.GPIO1 # 定义LED引脚 +LED2 = Pin.GPIO2 # 定义LED引脚 +LED3 = Pin.GPIO3 # 定义LED引脚 +LED4 = Pin.GPIO4 # 定义LED引脚 +LED5 = Pin.GPIO5 # 定义LED引脚 + + +def IO_On(gpioX): # 某个引脚置0 + GPIO_Write(gpioX, 0) # 调用写函数 + + +def IO_Off(gpioX): # 某个引脚置1 + GPIO_Write(gpioX, 1) # 调用写函数 + + +def IO_All_Off(): # 全部引脚置1 + IO_Off(LED1) + IO_Off(LED2) + IO_Off(LED3) + IO_Off(LED4) + IO_Off(LED5) + + +def main(): + while True: + IO_All_Off() # 灭 + IO_On(LED1) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED2) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED3) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED4) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED5) # 亮 + utime.sleep_ms(200) # 延时 + + +if __name__ == "__main__": + main() diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_1.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f159f0398ba8ea94182d672a232a7edac832a75 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_1.jpg differ diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_2.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f7d9a8fdcc6186a90a06efeaced6fcf0e872fe4 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_2.jpg differ diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_3.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb53a486ee169e810b4f3c6eda9cb39e0ca34e51 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_3.jpg differ diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_4.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a553cc0beac6a4a072b8ab18b5de88c16c4ab451 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_4.jpg differ diff --git a/docs/Quick_start/zh/media/Quectel_sbs_Socket_course.png b/docs/Quick_start/zh/media/Quectel_sbs_Socket_course.png new file mode 100644 index 0000000000000000000000000000000000000000..45647602d435c7f31e6f6431ee862bad7f76fea9 Binary files /dev/null and b/docs/Quick_start/zh/media/Quectel_sbs_Socket_course.png differ diff --git a/docs/Quick_start/zh/media/Quectel_sbs_Socket_relation.png b/docs/Quick_start/zh/media/Quectel_sbs_Socket_relation.png new file mode 100644 index 0000000000000000000000000000000000000000..9ffe2a127ce0932449577fccf47b65099faeefdf Binary files /dev/null and b/docs/Quick_start/zh/media/Quectel_sbs_Socket_relation.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_1.png b/docs/Quick_start/zh/media/sbs_json_picture_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd67d6d5297fa1639abcc81a6ddaccfffef1c21 Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_1.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_10.png b/docs/Quick_start/zh/media/sbs_json_picture_10.png new file mode 100644 index 0000000000000000000000000000000000000000..5604133ef3352c61a0b968dcee9761f2f7e7bc3a Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_10.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_2.png b/docs/Quick_start/zh/media/sbs_json_picture_2.png new file mode 100644 index 0000000000000000000000000000000000000000..df317173c3f1a7dad03f2d9d2a2da169a9840d77 Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_2.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_3.png b/docs/Quick_start/zh/media/sbs_json_picture_3.png new file mode 100644 index 0000000000000000000000000000000000000000..57e26aa96a7ee1b5f5b09314c6e2aed86f74fbba Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_3.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_4.png b/docs/Quick_start/zh/media/sbs_json_picture_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9098be763e2becd22055e2f9cfb3099b647070c4 Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_4.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_5.png b/docs/Quick_start/zh/media/sbs_json_picture_5.png new file mode 100644 index 0000000000000000000000000000000000000000..12f9622180d5321748f1e4d4fc5dcfd21e5e625d Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_5.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_6.png b/docs/Quick_start/zh/media/sbs_json_picture_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0df2069766be663bc7105bbe46d663ebc4b5b0ad Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_6.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_7.png b/docs/Quick_start/zh/media/sbs_json_picture_7.png new file mode 100644 index 0000000000000000000000000000000000000000..adb7828fa58fbedb678265e452059fb840cf6fc2 Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_7.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_8.png b/docs/Quick_start/zh/media/sbs_json_picture_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6968b04a40787be856b302874a2f724b1c75cd76 Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_8.png differ diff --git a/docs/Quick_start/zh/media/sbs_json_picture_9.png b/docs/Quick_start/zh/media/sbs_json_picture_9.png new file mode 100644 index 0000000000000000000000000000000000000000..afb5724c7278216072d58b405bfff446b853c1d9 Binary files /dev/null and b/docs/Quick_start/zh/media/sbs_json_picture_9.png differ diff --git a/docs/sbs/zh/BSP/SPI.md b/docs/sbs/zh/BSP/SPI.md index 892175b14df6406f978276d7d2bfd3c2733c4b93..74f170deee3eadad647775e9247f933bef327617 100644 --- a/docs/sbs/zh/BSP/SPI.md +++ b/docs/sbs/zh/BSP/SPI.md @@ -1,91 +1,107 @@ # QuecPython SPI总线开发 -## API简介 +## 修订历史 -本文以EC600S-CN模块为例,主要介绍QuecPython machine模块中SPI的使用。该模块包含的API有: +| 版本 | 日期 | 作者 | 变更表述 | +| ---- | ---------- | ---- | -------- | +| 1.0 | 2021-09-14 | Grey | 初版 | -- **machine.SPI(port, mode, clk)** +文档主要基于EC600x(包括EC600S、EC600N、EC600U)介绍如何使用 QuecPython_SPI 功能,通过本文你将了解到 EC600x_SPI 的参数设置及使用方法。 -- **SPI.wtite(data,datalen)** +有关API详解请参考 [QuecPython-machine - spi](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=spi) -- **SPI.read(data,datalen)** -- **SPI.write_read(r_data,data, datalen)** - +## SPI 简介 -具体的API 详解请参考[QuecPython-machine - spi](https://python.quectel.com/wiki/api/#spi) +SPI,是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 -## SPI简介 -SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 +### 主-从模式(Master-Slave) +SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave)。一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备,SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备,Slave 设备本身不能产生或控制 Clock,没有 Clock 则 Slave 设备不能正常工作。 -## SPI特点 +![media_SPI_1](media/media_SPI_1.jpg) -### 采用主-从模式(Master-Slave) 的控制方式 -SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作 +### 同步方式(Synchronous) +Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse),时钟脉冲组成了时钟信号(Clock Signal),时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。 -### 采用同步方式(Synchronous)传输数据 +![media_SPI_2](media/media_SPI_2.jpg) -Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的. -![](media\SPI_1.jpg) -### 数据交换(Data Exchanges) +### 四种通信模式 + +**时钟极性 CPOL** 是指 SPI 通讯设备处于空闲状态时,SCK 信号线的电平信号(即 SPI 通讯开始前、 NSS 线为高电平时 SCK 的状态)。 CPOL=0 时, SCK 在空闲状态时为低电平,CPOL=1 时,则相反。 + + **时钟相位 CPHA** 是指数据的采样的时刻,当 CPHA=0 时, MOSI 或 MISO 数据线上的信号将会在 SCK 时钟线的“奇数边沿” 被采样。当 CPHA=1 时,数据线在 SCK 的“偶数边沿” 采样。 -​ SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了. 一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上. 在数据传输的过程中, 每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃, 导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的。 +根据 **时钟极性 CPOL** 与 **时钟相位 CPHA** 的不同,SPI具有四种通信模式。 -### SPI有四种传输模式 +![media_SPI_3](media/media_SPI_3.jpg) -上升沿、下降沿、前沿、后沿触发。当然也有MSB和LSB传输方式. +![media_SPI_4](media/media_SPI_4.jpg) -![](media\spi_2.jpg) +![media_SPI_5](media/media_SPI_5.jpg) -### SPI只有主模式和从模式之分。 +### 数据交换(Data Exchanges) + +SPI 设备间的数据传输之所以又被称为数据交换,是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)"。在每个 Clock 周期内,SPI 设备都会发送并接收一个 bit 大小的数据,相当于该设备有一个 bit 大小的数据被交换了。 -没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。 +一个 Slave 设备要想能够接收到 Master 发过来的控制信号,必须在此之前能够被 Master 设备进行访问 (Access)。所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选,把想要访问的 Slave 设备选上,在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致 SPI 物理模块最终失效。因此,在程序中一般都会在 SPI 传输完数据后,去读取 SPI 设备里的数据,即使这些数据(Dummy Data)在我们的程序里是无用的。 +SPI只有主模式和从模式之分,没有读和写的说法。因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。 +## SPI通信 -## 使用SPI进行通信 +### 实验代码 -本文所示代码使用的硬件版本为 EC600S-CN V1.1。 +以下代码适合EC600x 开发板进行 SPI 自发自收通信测试。**实验前提:短接 SPI_MISO 与 SPI_MOSI 引脚**。 ```python # -*- coding: UTF-8 -*- - -from machine import SPI import utime +from machine import SPI +from machine import Pin + +# 屏蔽GNSS模块数据干扰. 由于EC600S/N的SPI_MISO与SPI_MOSI引脚还被复用为UART1. 开发板还连接GNSS模块L76K, 为了断开L76K吐数据对SPI通信的干扰, 需要添加下面两句代码. +gpio11 = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 0) # EC600S/EC600N使用 +gpio11.write(0) # EC600S/EC600N使用 + +w_data = "Grey" +r_data = bytearray(len(w_data)) +count = 10 # 运行次数 + +# 以下代码根据模块型号进行选择. +spi_obj = SPI(1, 0, 1) # EC600S/N使用 +# spi_obj = SPI(0, 0, 1) # EC600U使用 + +while count: + count -= 1 + utime.sleep(1) + ret = spi_obj.write_read(r_data, w_data, 100) + if ret == -1: + SPI_msg = "SPIReadError" + else: + SPI_msg = "SPIRead:{} running:{:0>2d}".format(r_data, count) + print(SPI_msg) +``` -def spi_test(): - spi_obj = SPI(1, 0, 1) - r_data = bytearray(5) - data = b"world" - # print(data) - ret = spi_obj.write_read(r_data, data, 5) - if ret is None: - print('----------', ret) - print('#########', r_data) -if __name__ == '__main__': - while True: - spi_test() - utime.sleep(1) +### 实验现象 -``` +![media_SPI_6](media/media_SPI_6.jpg) ## 配套代码 - - - 下载代码 \ No newline at end of file + + 下载代码 \ No newline at end of file diff --git a/docs/sbs/zh/BSP/code/code_SPI.py b/docs/sbs/zh/BSP/code/code_SPI.py new file mode 100644 index 0000000000000000000000000000000000000000..2eaef63c7a2a226912adb82b4a8cbf3113c415ea --- /dev/null +++ b/docs/sbs/zh/BSP/code/code_SPI.py @@ -0,0 +1,24 @@ +# -*- coding: UTF-8 -*- +import utime +from machine import SPI +from machine import Pin + +# 屏蔽GNSS模块数据干扰. 由于EC600S/N的SPI_MISO与SPI_MOSI引脚还被复用为UART1. 开发板还连接GNSS模块L76K, 为了断开L76K吐数据对SPI通信的干扰, 需要添加下面两句代码. +gpio11 = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PD, 0) # EC600S/EC600N使用 +gpio11.write(0) # EC600S/EC600N使用 + +w_data = "Grey" +r_data = bytearray(len(w_data)) +count = 10 # 运行次数 +spi_obj = SPI(1, 0, 1) # EC600S/EC600N使用 +# spi_obj = SPI(0, 0, 1) # EC600U/EC100Y使用 + +while count: + count -= 1 + utime.sleep(1) + ret = spi_obj.write_read(r_data, w_data, 100) + if ret == -1: + SPI_msg = "SPIReadError" + else: + SPI_msg = "SPIRead:{} running:{:0>2d}".format(r_data, count) + print(SPI_msg) diff --git a/docs/sbs/zh/BSP/code/spi_base.py b/docs/sbs/zh/BSP/code/spi_base.py deleted file mode 100644 index 21697f1833578d60ee787b4ce1ac58b0eb91e25c..0000000000000000000000000000000000000000 --- a/docs/sbs/zh/BSP/code/spi_base.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: UTF-8 -*- - -from machine import SPI -import utime - -def spi_test(): - spi_obj = SPI(1, 0, 1) - r_data = bytearray(5) - data = b"world" - # print(data) - ret = spi_obj.write_read(r_data, data, 5) - if ret is None: - print('----------', ret) - print('#########', r_data) - - -if __name__ == '__main__': - while True: - spi_test() - utime.sleep(1) diff --git a/docs/sbs/zh/BSP/media/SPI_1.jpg b/docs/sbs/zh/BSP/media/SPI_1.jpg deleted file mode 100644 index 8e8d1fbd0be4a7eba14f60eb04e176c73acc4e30..0000000000000000000000000000000000000000 Binary files a/docs/sbs/zh/BSP/media/SPI_1.jpg and /dev/null differ diff --git a/docs/sbs/zh/BSP/media/media_SPI_1.jpg b/docs/sbs/zh/BSP/media/media_SPI_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f9e636fa9fc329c164c2e2f42f31795b5c61abaf Binary files /dev/null and b/docs/sbs/zh/BSP/media/media_SPI_1.jpg differ diff --git a/docs/sbs/zh/BSP/media/media_SPI_2.jpg b/docs/sbs/zh/BSP/media/media_SPI_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ac14f0715250687e91e68bf13d5b98b4efac075 Binary files /dev/null and b/docs/sbs/zh/BSP/media/media_SPI_2.jpg differ diff --git a/docs/sbs/zh/BSP/media/media_SPI_3.jpg b/docs/sbs/zh/BSP/media/media_SPI_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf87c486c4832c74f3d20170f7cd64faf10d774a Binary files /dev/null and b/docs/sbs/zh/BSP/media/media_SPI_3.jpg differ diff --git a/docs/sbs/zh/BSP/media/media_SPI_4.jpg b/docs/sbs/zh/BSP/media/media_SPI_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66b9a7b203f332146efb947dc5c550a98c413dd5 Binary files /dev/null and b/docs/sbs/zh/BSP/media/media_SPI_4.jpg differ diff --git a/docs/sbs/zh/BSP/media/media_SPI_5.jpg b/docs/sbs/zh/BSP/media/media_SPI_5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88c9a0922849681691935bf954f22daf1123b45e Binary files /dev/null and b/docs/sbs/zh/BSP/media/media_SPI_5.jpg differ diff --git a/docs/sbs/zh/BSP/media/media_SPI_6.jpg b/docs/sbs/zh/BSP/media/media_SPI_6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a41d5f821b017388e145b87efddbe0a9759f3619 Binary files /dev/null and b/docs/sbs/zh/BSP/media/media_SPI_6.jpg differ diff --git a/docs/sbs/zh/BSP/media/spi_2.jpg b/docs/sbs/zh/BSP/media/spi_2.jpg deleted file mode 100644 index c539d8fbd899972406bbb10ed4816d6415094d1b..0000000000000000000000000000000000000000 Binary files a/docs/sbs/zh/BSP/media/spi_2.jpg and /dev/null differ