电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

SPI总线的软件模拟 -解决方案-华强电子网

来源:华强电子网 作者:华仔 浏览:193

标签:

摘要: 对于没有提供SPI接口的单片机而言,通常可使用软件的办法来模拟SPI的总线操作,包括串行时钟、数据输入和输出。Atmel公司生产的EEPROM具有SPI接口,存储容量为4Kb的AT25040就有SPI接口,80C51系列单片机与AT25040的SPI总线接口接线如图所示。 图 SPI总线接口接线图<?XML:NAMESPACE PREFIX = O /> 图9-6中,P1.0模拟SPI的数据

对于没有提供SPI接口的单片机而言,通常可使用软件的办法来模拟SPI的总线操作,包括串行时钟、数据输入和输出。

Atmel公司生产的EEPROM具有SPI接口,存储容量为4Kb的AT25040就有SPI接口,80C51系列单片机与AT25040的SPI总线接口接线如图所示。

图 SPI总线接口接线图<?XML:NAMESPACE PREFIX = O />

图9-6中,P1.0模拟SPI的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端(SS),P1.3模拟SPI的数据输入端(MISO)。下面给出模拟SPI串行输入、串行输出和串行输入/输出的3个子程序。

从AT25040的SO端接收8位数据并放入寄存器R0中。参考程序如下:

SPIIN:SETB P1.1 ;使P1.1(时钟)输出为1

CLRP1.2 ;选择从机

MOV R1, #08H ;置循环次数

SPIIN1: CLR P1.1 ;使P1.1(时钟)输出为0

NOP ;延时

NOP

MOV C, P1.3 ;从机输出送进位C

RLC A;左移至累加器A

SETBP1.1 ;使P1.1(时钟)输出为1

DJNZ R1, SPIIN1 ;判断是否循环8次(8位数据)

MOV R0, A ;8位数据送R0

RET

将80C51单片机中R0寄存器的内容传送到AT25040的SI端。参考程序如下:

SPIOUT: SETB P1.1 ;使P1.1(时钟)输出为1

CLRP1.2 ;选择从机

MOV R1, #08H ;置循环次数

MOV A, R0 ;8位数据送累加器A

SPIOUT1: CLR P1.1 ;使P1.1(时钟)输出为0

NOP;延时

NOP

RLCA;左移至累加器A,最高为至C

MOV P1.0, C ;进位C送从机输入

SETB P1.1 ;使P1.1(时钟)输出为1

DJNZ R1, SPIOUT1 ;判断是否循环8次(8位数据)

RET

将80C51单片机R0寄存器的内容传送到AT25040的SI端,同时从AT25040的SO端接收8位数据。参考程序如下:

SPIIO:SETB P1.1 ;使P1.1 (时钟)输出为1

CLR P1.2 ;选择从机

MOV R1, #08H ;置循环次数

MOV A, R0 ;8位数据送累加器A

SPIIO1: CLR P1.1 ;使P1.1(时钟)输出为0

NOP;延时

NOP

MOV C, P1.3 ;从机输出送进位C

RLCA;左移至累加器A,最高为至C

MOV P1.0, C ;进位C送从机输入

SETBP1.1 ;使P1.1(时钟)输出为1

DJNZ R1, SPIIO1 ;判断是否循环8次(8位数据)

RET

这些子程序适用于在串行时钟的上升沿输入和下降沿输出的各种串行外围接口芯片(如D/A和A/D转换芯片、实时时钟芯片、LED显示驱动芯片等)。对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变P1.1的输出电平顺序,这些子程序也同样适用。

如先置P1.1为低电平,之后再次置P1.1为高电平,再置P1.1为低电平等等。

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67