# 项目名称：Spi_Master_Transfer_Demo

---
## 功能描述

Demo用于测试SPI通信的不同配置。程序初始化多个SPI通道，采用多种配置对数据进行传输用于参考：
+ *使用DMA的异步传输*
+ *不使用DMA的异步传输*
+ *polling模式的异步传输*
+ *中断模式的异步传输*
+ *同步传输，AutoSAR要求的LEVEL_0 API*

代码对每个sequence传输完后的数据进行校验，确保发送和接收的数据是一致的。程序运行正常时，主循环会周期性对LED进行翻转（功能正常时LED8 会周期性亮灭）。

 **User case**
 <pre>
  1. Sequence_0 -- Job_0 --------- SPI_0 -- Channel_0(IB) & Channel_6(EB) : with DMA, AsyncTransmit
  2. Sequence_1 -- Job_1 --------- SPI_1 -- Channel_1(EB)                 : with DMA, AsyncTransmit
  3. Sequence_2 -- Job_2 --------- SPI_2 -- Channel_2(EB) & Channel_7(EB) : None DMA, AsyncTransmit
  4. Sequence_3 -- Job_3 --------- SPI_3 -- Channel_3(EB)                 : None DMA, AsyncTransmit
  5. Sequence_4 -- Job_4 & Job_6-- SPI_4 -- Channel_4(EB)                 : with DMA, AsyncTransmit
  6. Sequence_5 -- Job_5 --------- SPI_5 -- Channel_5(EB) & Channel_8(IB) : None DMA, SyncTransmit
  </pre>

<p style="text-align: center;"><strong>Note</strong></p>

本示例需要将SPI接口的MOSI和MISO引脚短接，以创建一个回环配置，其中传输的数据直接由发送器接收回来。

---
## Setup

+ ***步骤1***: ***参考SPI硬件连接图***，连接每个SPI总线的MISO和MOSI端口
+ ***步骤2***：使用 YCT 工具打开示例的YCT工程文件（**Spi_Master_Transfer_Demo.yct**），根据您的需求配置工具链（默认使用 VS Code + GCC）。
+ ***步骤3***：生成代码，如果需要，您可以更改配置（以适应您自己的硬件设计），如果这样做，请确保所有修改都正确无误，并且在生成代码之前没有错误存在。
+ ***步骤4***：根据您的配置，使用相应的工具（VS Code/IAR/Keil IDE）打开生成的工程。
+ ***步骤5***：编译生成的工程，打开 EVB 电源并通过可用的调试器（如 J-Link 调试探针）将编译后好的可执行文件下载到 EVB。
+ ***步骤6***：调试、运行示例代码。

### SPI硬件连接图
**SPI0**

|  Function  |  MCU Pin  | EVB pin header|  
| ---- | ------- | ------ |
|  MISO  |  PTA30  |  H4_29  |
|  MOSI  |  PTE01  |  H1_27  |

**SPI1**

|  Function  |  MCU Pin  | EVB pin header|  
| ---- | ------- | ------ |
|  MISO  |  PTA27  |  H1_22  |
|  MOSI  |  PTA29  |  H1_26  |

**SPI2**

|  Function  |  MCU Pin  | EVB pin header|
| ---- | ------- | ------ |
|  MISO  |  PTB27  |  H2_28  |
|  MOSI  |  PTB28  |  H2_29  |

**SPI3**

|  Function  |  MCU Pin  | EVB pin header|
| ---- | ------- | ------ |
|  MISO  |  PTE03  |  H1_21  |
|  MOSI  |  PTA11  |  H4_27  |

**SPI4**

|  Function  |  MCU Pin  | EVB pin header|
| ---- | ------- | ------ |
|  MISO  |  PTD06  |  H2_09  |
|  MOSI  |  PTD07  |  H2_08  |

**SPI5**

|  Function  |  MCU Pin  | EVB pin header|
| ---- | ------- | ------ |
|  MISO  |  PTD11  |  H2_12  |
|  MOSI  |  PTD12  |  H2_11  |

---

## 硬件需求

- **评估板（EVB）**：YTM32B1ME0-Q144-EVB-Rev.B/C
- **调试器**：J-Link HW v9.2或更高版本，安装有YUNTU `YTM32B1ME0` 补丁（支持包）。

***注意***: 请确认EVB底部的版本号，如果是***YTM32B1ME0-EVB-Q144 Rev.C***，`YTMEVB_Demo`、`Icu_Demo`和`Dio_Demo`请使用以**_RevC**结尾的样例工程。

---

## 软件需求

- **配置与代码生成工具**：
  - **MCAL**：Yuntu Config Tool（YCT）v2.7.0或更高版本
- **编译器工具链**：
  - **GCC**：GNU GCC v10.3或更高版本
  - **Keil/MDK**：ARM Keil/MDK v5.36或更高版本(编译器推荐使用`armclang v6.18.2`)
  - **IAR**：IAR v9.50或更高版本
  - **VS Code**：Microsoft Visual Studio Code IDE v1.76或更高版本（需安装C/C++支持、GNU工具链、CMake v3.25、ninja、Cortex-Debug扩展）
- **调试器驱动**：
  - **J-Link**：SEGGER J-Link v7.82或更高版本，需安装YUNTU `YTM32B1ME0` 补丁（支持包）。
  - **Ozone调试工具**：SEGGER Ozone v3.28或更高版本。

  ***注意***: 需要安装 **YTM32B1ME0** 补丁，补丁可通过 **YCT** 工具或联系 ***云途 销售/FAE 团队***获取.


---