DSP2808与ARM STM32F103的SPI通讯例程及详解

该博客详细介绍了DSP TMS320F2808PZA作为主机,ARM STM32F103VCT6作为从机之间的SPI通信协议和实现步骤。内容包括SPI通信的基本原理、通信协议的框图解释,以及具体的DSP主机和ARM从机的例程,涉及到SPI的配置、中断接收和定时发送等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本程序经验证可实现DSP和ARM的SPI通讯。
一、 SPI的通信协议
SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口一般由4根线组成,CS片选信号(有的单片机上也称为NSS),SCLK时钟信号线,MISO数据线(主机输入从机输出),MOSI数据线(主机输出从机输入),CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟信号来发起通讯。通讯时主机的数据由MISO输入,由MOSI 输出,输入的数据在时钟的上升或下降沿被采样,输出数据在紧接着的下降或上升沿被发出(具体由SPI的时钟相位和极性的设置而决定)。
这里写图片描述
串行协议框图
二、 例程
DSP TMS320F2808PZA做主机,ARM STM32F103VCT6做从机实现两芯片的SPI通讯。
1、 ARM从机例程。
ARM使用SPI1且工作于从模式。从机的SPI一直都是处于等待状态,一旦主机有数据发送过来,从机立即进入中断进行接收。接收数据的同时也向主机发送数据。

void SPI_Init_user(void)          //SPI1配置函数
{
  SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
  /* 使能 GPIOA 时钟 */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
  /*SPI1外设时钟开 */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
 /*引脚配置*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出,复用模式的输入输出由程序决定。
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  /* SPI1 工作方式配置 */
  SPI_Cmd(SPI1, DISABLE);   //配置前先关闭SPI
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //全双工工作模式。
  SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;      //设置SPI1为从模式。
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;  //数据位16位
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;  //空闲时刻为高,DSP那边也设为高。
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值