0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全国产T3+FPGA的SPI与I2C通信方案分享

Tronlong创龙科技 来源:Tronlong创龙科技 作者:Tronlong创龙科技 2024-02-06 10:05 次阅读

近年来,随着中国新基建、中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力、工业控制、智慧医疗等行业,往往更需要ARM + FPGA架构的处理器平台来实现例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等特定功能,因此ARM + FPGA架构处理器平台愈发受市场欢迎。


因此,创龙科技一年前正式推出了国产化率100%的ARM + FPGA工业核心板,它基于全志T3 +紫光同创Logos处理器设计。

全志T3为准车规级芯片,四核ARM Cortex-A7架构,主频高达1.2GHz,支持双路网口、八路UARTSATA大容量存储接口,同时支持4路显示、GPU以及1080P H.264视频硬件编解码。另外,创龙科技已在T3平台适配国产嵌入式系统翼辉SylixOS,真正实现软硬件国产化。


紫光同创Logos PGL25G/PGL50G FPGA在工业领域应用广泛,逻辑资源分别为27072/51360,与国外友商产品pin to pin兼容,主要用于多通道/高速AD采集或接口拓展。因其价格低、质量稳定、开发环境易用等优点,受到工业用户的广泛好评。尤其是开发环境,最快3天可完成从国外友商产品到紫光同创产品的切换。

wKgaomXBkqKAfoX7AADt7RF7KLM774.png

图1 ARM + FPGA典型应用场景

SPI通信优势与应用场景

SPI(Serial Peripheral Interface)是一种用于串行数据传输的通信协议,SPI通信具有带宽高、实时性强、传输速度快、连接简单、可靠性高和灵活性强等优势。


SPI协议适用于许多嵌入式系统和外围设备之间的通信需求,可提供快速、可靠和灵活的数据传输,非常适合“小数据-低时延”和“大数据-高带宽”的应用场景。

wKgaomXBkraAcYS7AAAde1IdMME597.png

图2SPI通信总线

I2C通信优势和应用场景

I2C(Inter-Integrated Circuit)是一种串行双向通信协议,I2C通信具有硬件资源需求低、简单灵活、可靠性高和支持多种设备类型等优势。


I2C协议可提供简单、可靠和灵活的数据传输。它广泛应用于各种传感器、存储设备、显示设备和通信模块等领域。适用控制命名传输和系统配置的应用场景。

wKgaomXBks2AcqyVAACuGUf4tHg267.png

图3I2C通信总线


国产T3+FPGA的SPI与I2C通信方案介绍

本章节主要介绍全志科技T3与紫光同创Logos基于SPI、I2C的ARM + FPGA通信方案,使用的硬件平台为:创龙科技TLT3F-EVM工业评估板。

I2C通信案例

案例功能:

实现T3(ARM Cortex-A7)与FPGA的TWI(I2C)通信功能。

FPGA案例源码为“4-软件资料Demofpga-demoi2c_slave”,实现I2C Slave功能,并内置用户可读写寄存器LED寄存器、KEY寄存器。

ARM端作为I2C Master,可通过TWI(I2C)总线读写FPGA端用户可读写寄存器0x00、LED写寄存器0x01(写1则点亮FPGA端LED,写0则熄灭),以及查看KEY寄存器0x02检测FPGA端用户输入按键状态。

案例测试:评估板上电,请先加载运行FPGA端可执行程序。执行如下命令可查看到I2C总线上的挂载设备,其中0x2a为FPGA端I2C Slave的地址。


Target#echo "1 4 1 7" > /proc/sys/kernel/printk //屏蔽内核printk打印,避免I2C驱动扫描找不到设备时打印警告信息

Target#i2cdetect -r -y 0


wKgZomXBktuAQlykAAAPZW8FKBI119.png

图4

执行如下命令,读写FPGA端用户可读写寄存器0x00。


Target#i2cset -f -y 0 0x2a 0x00 0x55 //往寄存器0x00写0x55

Target#i2cget -f -y 0 0x2a 0x00 //读取寄存器0x00,值为0x55

wKgaomXBkuOAIMBQAAAGj9uCkUI844.png

图5


执行如下命令,写FPGA端LED寄存器0x01,实现对FPGA端用户可编程指示灯控制。


Target#i2cset -f -y 0 0x2a 0x01 0xc0 //往LED寄存器0x01写0xc0,点亮FPGA端LED3、LED4

Target#i2cset -f -y 0 0x2a 0x01 0x00 //往LED寄存器0x01写0x00,熄灭FPGA端LED3、LED4

wKgZomXBku2AOFG4AAAGRystjAc109.png

图6


执行如下命令,读FPGA端KEY寄存器0x02,实现对FPGA端用户输入按键的状态检测。


Target#i2cget -f -y 0 0x2a 0x02 //读取KEY寄存器0x02,值为0xe0

wKgaomXBkvmAOY_LAAAF6hKui28694.png

图7


请按下FPGA端用户输入按键KEY7并保持按下状态,再执行如下命令。


Target#i2cget -f -y 0 0x2a 0x02 //读取KEY寄存器0x02,值为0xc0

wKgaomXBkwGAA9anAAAF3iaBxPw806.png

图8


请按下FPGA端用户输入按键KEY8并保持按下状态,再执行如下命令。


Target#i2cget -f -y 0 0x2a 0x02 //读取KEY寄存器0x02,值为0xa0

wKgZomXBkw-AEswaAAAF2pdKu3M028.png

图9

请按下FPGA端用户输入按键KEY9并保持按下状态,再执行如下命令。


Target#i2cget -f -y 0 0x2a 0x02 //读取KEY寄存器0x02,值为0x60

wKgaomXBkxWAZQf3AAAGArivwb0741.png

图10

基于Linux的SPI通信案例

案例功能:基于Linux系统,实现T3(ARM Cortex-A7)与FPGA的SPI通信功能。


ARM端案例源码为“4-软件资料Demomodule-demosspi_rw”,实现SPI Master功能,具体如下:

(1)打开SPI设备节点,如:/dev/spidev0.1。

(2)使用ioctl配置SPI总线,如SPI总线极性和相位、通信速率、数据长度等。

(3)选择模式为单线模式或双线模式。当设置SPI总线为双线模式时,发送数据为单线模式,接收数据为双线模式。

(4)发送数据至SPI总线,以及从SPI总线读取数据。

校验数据,然后打印读写速率、误码率。


FPGA端案例源码为“4-软件资料Demofpga-demosdram_spi”和“4-软件资料Demofpga-demosdram_spi_dual”,实现SPI Slave功能,具体说明如下:(1)将SPI Master发送的数据保存至DRAM。(2)SPI Master发起读数据时,FPGA从DRAM读取数据通过SPI总线传输至SPI Master。当SPI总线为双线模式时,接收数据支持双线模式,而发送数据仅支持单线模式。

wKgaomXBkyGAc6HHAAA0rFG9eBY280.png

图11

ARM端程序流程图

案例测试:

评估板上电,请先加载运行FPGA端可执行程序,若进行SPI单线模式测试,请运行案例"dram_spibin"目录下的程序可执行文件;若进行SPI双线模式测试,请运行"dram_spi_dualbin"目录下的程序可执行文件。同时将ARM端可执行程序spi_rw拷贝至评估板文件系统任意目录下。

进入评估板文件系统,执行如下命令查看新生成的spidev设备节点。


Target#ls /dev/spidev0.1

wKgZomXBkyqABdsVAAAGIewi9ik254.png

图12


执行如下命令查询程序命令参数


Target#./spi_rw -h


wKgZomXBky-AJ7sUAAApuyBSSQI840.png

图13


1SPI单线模式


1.1功能测试


执行如下命令运行程序,ARM通过SPI总线写入1KByte随机数据至FPGA DRAM,然后读出数据、进行数据校验,同时打印SPI总线读写速率和误码率,最终实测写速率为2.405MB/s,读速率为2.405MB/s,误码率为0。如下图所示。


Target#./spi_rw -d /dev/spidev0.1-s 50000000 -OH -m 1 -S 1024-c 2


参数解析:

-d:设备节点;

-s:设置通信时钟频率(Hz),本次测试设置SPI总线通信时钟频率为50MHz,则SPI单线模式理论通信速率为:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;

-O:空闲状态时,SCLK为高电平(CPOL=1);

-H:从第二个跳变沿开始采样(CPHA=1);

-m:选择模式传输模式(1表示单线模式,2表示双线模式);

-S:设置传输数据大小,单位为Byte;

-c:循环传输数据包的次数。

wKgaomXBkziAaIwKAAARktbMZKk558.png

图14


1.2性能测试


(1)基于50MHz时钟频率


执行如下命令运行程序,基于50MHz时钟频率、增大读写数据量测试SPI总线最高传输速率。ARM通过SPI总线写入1MByte随机数据至FPGA DRAM,然后读出数据,不做数据检验,最后打印SPI总线读写速率和误码率,如下图所示。


备注:本案例设计一次读写1KByte随机数据至FPGA DRAM,因此误码率较高。


Target#./spi_rw -d /dev/spidev0.1-s 50000000 -OH -m 1 -S 1048576 -c 2

wKgZomXBkz-ABdA3AAAS8nKJVV4548.png

图15


本次测试设置SPI总线通信时钟频率为50MHz,则SPI单线模式理论通信速率为:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s。从上图可知,本次实测写速率为5.757MB/s,读速率为5.757MB/s,接近理论通信速率。

本次测试SPI使用了DMA传输,测得CPU的占用率约为1%,如下图所示。

wKgZomXBk0aAJGgDAABr-ir_E8o691.png

图16


(2)基于100MHz时钟频率


执行如下命令运行程序,测试基于100MHz时钟频率的SPI单线模式的最高通信带宽。ARM通过SPI总线写入1MByte随机数据至FPGA DRAM并读出数据,不做数据检验,最后打印SPI总线读写速率和误码率,如下图所示。


备注:本次测试旨在测试SPI的最高传输速率,目前SPI速率最大支持50MHz时钟频率,当时钟频率配置到最大100MHz时速率会出现时序问题,现象是整体往右移了1bit。例如发送10000000,实际接收到01000000,并在测试中出现误码。


Target#./spi_rw -d /dev/spidev0.1-s 100000000 -OH -m 1 -S 1048576 -c 100

wKgZomXBk1GAOLtuAAASrpPikPM450.png

图17

根据官方数据手册(如下图),SPI总线通信时钟频率理论值最大为100MHz。本次测试设置SPI总线通信时钟频率为最大值100MHz,则SPI单线模式理论速率为:(100000000 / 1024 / 1024 / 8)MB/s ≈ 11.92MB/s。从上图可知,在100MHz下实测SPI单线模式写速率为:11.331MB/s,SPI单线模式读速率为:11.331MB/s,接近理论通信速率。

wKgZomXBk1eAQfEHAAGz6MRvHvc680.png

图18


本次测试SPI使用了DMA传输,测得CPU的占用率约为1%,如下图所示。

wKgZomXBk1-AFJPEAABdt3bZ110945.png

图19

2SPI双线模式


2.1功能测试


执行如下命令运行程序,ARM通过SPI总线写入1KByte随机数据至FPGA DRAM,然后读出数据、进行数据校验,同时打印SPI总线读写速率和误码率,如下图所示。


Target#./spi_rw -d /dev/spidev0.1-s 50000000 -OH -m 2 -S 1024-c 1


参数解析:

-d:设备节点;

-s:设置通信时钟频率(Hz),本次测试设置SPI总线通信时钟频率为50MHz,则SPI双线模式理论通信速率为:(50000000 / 1024 / 1024 / 4)MB/s ≈ 11.92MB/s;

-O:空闲状态时,SCLK为高电平(CPOL=1);

-H:从第二个跳变沿开始采样(CPHA=1);

-m:选择模式传输模式(1表示单线模式,2表示双线模式);

-S:设置传输数据大小,单位为Byte;

-c:循环传输数据包的次数。

wKgZomXBk2eALLSCAAAWqUBe1mE808.png

图20


从上图可知,本次实测写速率为2.577MB/s,读速率为5.222MB/s,误码率为0。


2.2性能测试


(1)基于50MHz时钟频率


执行如下命令运行程序,基于50MHz时钟频率、增大读写数据量测试SPI总线最高传输速率。ARM通过SPI总线写入1MByte随机数据至FPGA DRAM,然后读出数据,不做数据检验,最后打印SPI总线读写速率和误码率,最终本次实测写速率为5.892MB/s,读速率为11.365MB/s。如下图所示。


备注:本案例设计一次读写1KByte随机数据至FPGA DRAM,因此误码率较高。


Target#./spi_rw -d /dev/spidev0.1-s 50000000 -OH -m 2-S 1048576 -c 1

wKgZomXBk3CABcrpAAAaIr2i0Uc822.png

图21


本次测试设置SPI总线通信时钟频率为50MHz,则SPI单线模式理论通信速率为:(50000000/1024/1024/8)MB/s ≈ 5.96MB/s;SPI双线模式理论通信速率为:(50000000 / 1024 / 1024 / 4)MB/s ≈ 11.92MB/s。


本次测试SPI使用了DMA传输,测得CPU的占用率约为0%,如下图所示。

wKgZomXBk3qATJCHAABaAwqyFKs936.png

图22

(2)基于100MHz时钟频率


执行如下命令运行程序,测试基于100MHz时钟频率的SPI双线模式的最高通信带宽。ARM通过SPI总线写入1MByte随机数据至FPGA DRAM并读出数据,不做数据检验,最后打印SPI总线读写速率和误码率,最终在100MHz下实测SPI双线模式写速率为:11.684MB/s,SPI双线模式读速率为:23.432MB/s。如下图所示。


备注:本次测试旨在测试SPI的最高传输速率,目前SPI速率最大支持50MHz时钟频率,当时钟频率配置到最大100MHz时速率会出现时序问题,现象是整体往右移了1bit。例如发送10000000,实际接收到01000000,并在测试中出现误码。


Target#./spi_rw -d /dev/spidev0.1-s 100000000 -OH -m 2-S 1048576 -c 100

wKgaomXBk4aADFQsAAAYcdWmpkA968.png

图23

根据官方数据手册(如下图),SPI总线通信时钟频率理论值最大为100MHz。本次测试设置SPI总线通信时钟频率为最大值100MHz,则SPI单线模式理论通信速率为:(100000000/1024/1024/8)MB/s ≈ 11.92MB/s;SPI双线模式理论速率为:(100000000 / 1024 / 1024 / 4)MB/s ≈ 23.84MB/s。

wKgZomXBk1eAQfEHAAGz6MRvHvc680.png

图24


本次测试SPI使用了DMA传输,测得CPU的占用率约为0%,如下图所示。

wKgZomXBk5SAYGJbAABcSnO8WjA913.png

图25


基于Linux-RT的SPI通信案例


案例功能:基于Linux-RT实时系统,演示T3(ARM Cortex-A7)与FPGA之间的SPI通信功能。本案例通信数据量少、带宽低,但实时性高,适用于对通信带宽要求不高,但通信实时性有严格要求的工控场合。


ARM端案例源码为“4-软件资料Demomodule-demosrt_spi_rw”,实现SPI Master功能,具体如下:

(1)打开SPI设备节点。如:/dev/spidev0.1。

(2)使用ioctl配置SPI总线。如SPI总线极性和相位、通信速率、数据字长度等。

(3)创建实时线程。

(4)发送数据至SPI总线,以及从SPI总线读取数据。

(5)打印发送、接收的速率和传输耗时。

校验数据,然后打印读写速率、误码率。


FPGA端案例源码为“4-软件资料Demofpga-demosdram_spi”,实现SPI Slave功能,具体如下:(1)将SPI Master发送的数据保存至DRAM。SPI Master发起读数据时,FPGA从DRAM读取数据并通过SPI总线传输至SPI Master。

wKgaomXBk5-AF8WbAAAnDa95lAA176.png

图26

ARM端程序流程图

案例测试:由于我司默认使用是的Linux内核,因此需参考Linux系统使用手册文档中的“替换内核、内核模块”章节将Linux系统启动卡替换为Linux-RT系统。


评估板上电,请先加载运行FPGA端可执行程序。将ARM端可执行文件rt_spi_rw拷贝至评估板文件系统任意目录下,执行如下命令,查看新生成的spidev设备节点。


Target#ls /dev/spidev0.1

wKgaomXBk6WASGU-AAAGR1MDRRI699.png

图27


执行如下命令,查询程序命令参数。


Target#./rt_spi_rw -h


wKgZomXBk6qAQFSRAAAqLm5G23w557.png

图28


1非轮询方式


执行如下命令运行程序,ARM通过SPI总线写入随机数据至FPGA DRAM,然后读出数据、进行数据校验,同时打印SPI总线读写速率、传输耗时和误码率,最终实测最小耗时为44us,最大耗时为167us,平均耗时为48us;写速率为0.076MB/s,读速率为0.076MB/s,误码率为0。如下图所示。


Target#./rt_spi_rw -d /dev/spidev0.1 -s 50000000 -OH -S 4 -c 1024


参数解析:

-d:设备节点;

-s:设置通信时钟频率(Hz),本次测试设置SPI总线通信时钟频率为50MHz,则理论通信速率为:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;

-O:空闲状态时,SCLK为高电平(CPOL=1);

-H:从第二个跳变沿开始采样(CPHA=1);

-S:设置传输数据大小,单位为Byte;

-c:循环传输数据包的次数。

wKgaomXBk7GAOAZFAAAWyIQz500218.png

图29


2轮询方式


执行如下命令运行程序,ARM通过SPI总线写入4Byte随机数据至FPGA DRAM,读出数据、进行数据校验,同时打印SPI总线读写速率、传输耗时和误码率,最终实测最小耗时为27us,最大耗时为152us,平均耗时为30us;写速率为0.118MB/s,读速率为0.118MB/s,误码率为0。如下图所示。


Target#./rt_spi_rw -d /dev/spidev0.1-s 50000000 -OHp -S 4 -c 1024


参数解析:

-d:设备节点;

-s:设置通信时钟频率(Hz),本次测试设置SPI总线通信时钟频率为50MHz,则理论通信速率为:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;

-O:空闲状态时,SCLK为高电平(CPOL=1);

-H:从第二个跳变沿开始采样(CPHA=1);

-p:SPI发送端采用轮询方式(每次发送数据量≤64Byte);

-S:设置传输数据大小,单位为Byte;

-c:循环传输数据包的次数。

wKgZomXBk7qAVYiwAAAX8JCo158026.png

图30


审核编辑 黄宇


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1627

    文章

    21685

    浏览量

    602322
  • 芯片
    +关注

    关注

    454

    文章

    50502

    浏览量

    422330
  • 寄存器
    +关注

    关注

    31

    文章

    5328

    浏览量

    120116
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1702

    浏览量

    91384
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1482

    浏览量

    123430
收藏 人收藏

    评论

    相关推荐

    探索GPIO/ADC/LED/I2C/SPI/USB…的完整世界

    今天了解的是GPIO/ADC/LED/I2C/SPI/USB硬件接口设计及其注意事项,希望对大家有所帮助。
    的头像 发表于 11-17 09:59 244次阅读
    探索GPIO/ADC/LED/<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/USB…的完整世界

    详解I2C总线与SPI总线的区别

    I2C(Inter-Integrated Circuit)表示集成电路互连,是一种用于线路板内部芯片之间通信的总线。
    的头像 发表于 10-16 15:16 2754次阅读
    详解<b class='flag-5'>I2C</b>总线与<b class='flag-5'>SPI</b>总线的区别

    DHT11用的是SPI还是I2C

    DHT11并不使用SPII2C通信协议,而是采用单总线(1-Wire)协议进行通信 。单总线协议是由美国DALLAS达尔斯公司推出的外围串行扩展总线,具有简洁的线路连接和较低的功耗特
    的头像 发表于 09-04 09:11 926次阅读

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,I2C协议因其高效、灵活和易于实现的特点,在电子设备间的数据交
    的头像 发表于 07-25 18:06 1339次阅读

    全国产T3+FPGASPII2C通信方案分享

    简单、可靠和灵活的数据传输。它广泛应用于各种传感器、存储设备、显示设备和通信模块等领域。适用控制命名传输和系统配置的应用场景。 图3 I2C通信总线
    发表于 07-17 10:52

    I2CSPI、UART的通信过程还可以这样理解

    到目前为止,I2CSPI和UART等仍然是电子嵌入式设备中最常用的通信协议,本文,我们将剖析这三种协议,让大家清楚、直观的了解它们的功能、优点和局限性,并辅以GIF动图展示。一、IIC协议I
    的头像 发表于 05-23 08:10 6768次阅读
    <b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>过程还可以这样理解

    SPII2C通信协议:应用与区别

    本文深入解析了SPII2C这两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;I2C
    的头像 发表于 04-22 16:45 1700次阅读

    实测52.4MB/s!全志T3+FPGA的CSI通信案例分享!

    支持4路显示、GPU以及1080P H.264视频硬件编解码。另外,创龙科技已在T3平台适配国产嵌入式系统翼辉SylixOS,真正实现软硬件国产化。 国产ARM +
    发表于 04-18 10:53

    逼真动画展示I2CSPI、UART的通信过程

    到目前为止,I2CSPI和UART等仍然是电子嵌入式设备中最常用的通信协议,本文,我们将剖析这三种协议,让大家清楚、直观的了解它们的功能、优点和局限性,并辅以GIF动图展示。I2C
    的头像 发表于 04-12 08:27 941次阅读
    逼真动画展示<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>过程

    总结usart、uart、i2cspi区别及相关知识

    USART、UART、I2CSPI是四种不同的串行通信协议,它们各自具有独特的特点和应用领域
    的头像 发表于 04-10 09:47 1675次阅读
    总结usart、uart、<b class='flag-5'>i2c</b>、<b class='flag-5'>spi</b>区别及相关知识

    造成FX3 I2C延迟的原因?

    我使用 FX3 的 GPIF2 功能从 FPGA 接收大量数据,然后使用批量路径通过 USB 将这些数据传输到 PC。 在 USB 批量传输期间,当使用 FX3
    发表于 02-23 06:39

    蓝牙串口通讯总线——I2C/SPI/UART

    嵌入式工程师在做串口通信调试工作的时候,会经常用到I2CSPI、UART这3条总线,I2CSPI
    的头像 发表于 01-22 09:41 1521次阅读
    蓝牙串口通讯总线——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/UART

    XV4001BC车载用SPI/I2C输出接口的数字输出

    XV4001BC车载用SPI/I2C输出接口的数字输出,可实现角速度输出和温度传感器输出,满足汽车导航和通讯系统的要求。SPI / I2C 输出接口角速度输出(16bit)、温度传感
    发表于 01-02 16:33 0次下载

    i2c接口和spi接口区别

    I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)都是用于设备间通信的串行接口标准。它们在很多方面有着相似之处,但也有一些
    的头像 发表于 12-25 15:02 3862次阅读

    SPII2C的异同及优缺点

    SPII2C的异同及优缺点  SPI(Serial Peripheral Interface)和I2C(Inter-Integrated Circuit)是两种常见的串行
    的头像 发表于 12-07 10:46 3086次阅读