# Spi **Repository Path**: thtfcccj/Spi ## Basic Information - **Project Name**: Spi - **Description**: 嵌入式系统通用驱动程序接口及其实现-Spi设备驱动程序 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2020-08-18 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 嵌入式系统通用驱动程序接口及其实现-SPI驱动程序 * 此接口为具体项目中: 需要SPI通讯时,提供统一的操作函数。 ### 文件说明: * SpiDev.h:Spi多例化统一接口 * 各MCU实现: + SpiDev_Lpc_ARM 在NXP LPC硬件SPI上的实现 + SpiDev_Avr: 在AVR上的实现 + SpiDev_Pic: 在PIC16F19系列上的实现 + SpiDev_Soft: 使用IO模拟时的实现。 * Sip_Cs1: 各MCU对应实现中的片选控制,仅1个设备时 ### 软件结构说明: 此接口含以下几大部分 * SPI设备驱动程序部分: + **SPI通用操作接口:** 即对外接口调用文件:**SpiDev.h** ,其它软件部分操作SPI时,**包含此文件即可**。 + **SPI操作接口的各种实现:** 以*SpiDev(下横线_)SPI硬件名称(或载体)(下横线_)专用编译环境(可选,严重不建议代码与编译环境相关连)*命名, 与具体使用的SPI硬件的接口有关,即有各种不同的实现。但一种硬件仅实现一次,项目中需要那个加入那个即可,具有通用性(*实现时需尽量排除编译器影响,使一个SPI驱动的实现能在各种编译器里运行*)。 * SPI设备实例化部分-通用接口: + **SPI通用实例化接口:** 即对外接口调用文件:**Spi.h** ,其它软件部分需要具体Spi设备时,**包含此文件即可**。 + **SPI操作接口的各种实现:** 以*Spi(下横线_)Spi硬件名称(或载体)(下横线_)专用编译环境(可选,严重不建议代码与编译环境相关连)*命名, 与具体使用的SPI硬件有关,即有各种不同的实现。但一种硬件仅实现一次,项目中需要那个加入那个即可,具有通用性(*实现时需尽量排除编译器影响,使一个SPI驱动的实现能在各种编译器里运行*)。 * SPI设备实例化部分-通用单SPI硬件设备+单片选专用: + **SPI设备实例化部分-单例SPI硬件设备+单片选(定义为SpiCs)专用接口:** 即对外接口调用文件:**Spi_Cs1.h** ,其它软件部分需要具体Spi设备时,**包含此文件即可**。 + **Spi_Cs1操作接口的各种实现:** 以*Spi_Cs1(下横线_)Spi硬件名称(或载体)(下横线_)专用编译环境(可选,严重不建议代码与编译环境相关连)*命名, 与具体使用的SPI硬件有关,即有各种不同的实现。但一种硬件仅实现一次,项目中需要那个加入那个即可,具有通用性(*实现时需尽量排除编译器影响,使一个SPI驱动的实现能在各种编译器里运行*)。 ####使用说明: * SpiDev部分: + 1.根据项目嵌入式硬件不同,将SpiDev.h和**与项目对应的**的具体实现文件。增加到开发环境中。 + 2.(此步可选) 查看具体实现文件文件内,是否有“编译选项”部分,若有,根据“编译选项”提示,在系统预编译头文件中增加相应配置。**为保证SpiDev实现文件的通用性,严禁对此实现做任何的改动**(BUG或提升功能与性能除外),若有不适用性,请复制后,包含复制文件进行操作。 * SPI设备实例化部分(含通用与专用实现,根据情况包含其中之一): + 1.根据项目嵌入式硬件不同,将Spi.h(或Spi_Cs1)和**与项目对应的**的具体实现文件。增加到开发环境中。 + 2.(此步可选) 查看Spi项目内实现文件文件内,是否有“编译选项”部分,若有,根据“编译选项”提示,在系统预编译头文件中增加相应配置。**为保证Spi.h通用性,严禁对此实现做任何的改动**(BUG或提升功能与性能除外),若有不适用性,请复制后,包含复制文件进行操作。 ####目录结构组织: * **小型项目时**: 即不区分组件层,放在“项目源文件目录\Spi”下,内部不再有子目录 * **大中型项目时**: 区分组件层,放在“项目源文件目录\components\Spi”下,若项目很多,且同一项目也有较多实现时,可将具体实现文件放在此目录“项目名称”目录下,以实现分类存放。 ------------------------------------------------------------------------------- ##开源项目说明 * 为各类单片机提供模板支持,**欢迎大家增加对各类嵌入式硬件的操作模板**,以让更多人使用 * 版权声明: ...ch这世道,说了也等于白说,总之以下点: + **源代码部分:** 可以自由使用,源代码中,也不需做任何版权声明。 + **分享时:** 为防止碎化片,请注明出处,以利于开源项目的推广。 + **关于fork:** 这个欢迎(但为防止碎化片化,请不要分支或单独推广)。更欢迎为此开源项目直接贡献代码。 ##此开源项目对应的教程 * 视频在分享平台:http://thtfcccj.56.com * 与视频同步输入的文字,在http://blog.csdn.net/thtfcccj * 同步的开源项目,则在代码托管平台:https://github.com/thtfcccj ##此开源项目对应的两个件教学视频: * 嵌入式系统通用驱动程序接口及其实现2-EERPOM操作标准化 * 嵌入式系统通用驱动程序接口及其实现n-EERPOM存取位置标准化