zedboard(5)spi轮询和中断

本文介绍了在Zynq平台上使用SPI接口与外部AD设备连接的配置和编程方法。通过XSpiPs初始化、设置选项、选择从设备SS及中断与轮询模式的使用,详细阐述了SPI通信的过程。示例代码展示了轮询模式下读写操作,并提供了中断模式的框架,强调了中断处理程序在SPI通信中的作用。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

一个SPI可以有几个从设备
在zynq开发和外部ad相连时,经常需要spi进行寄存器配置,连线一定要注意,MOSI和MISO信号为SDI和SDO。
在这里插入图片描述
在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。
备注:只选一个ss,可以不用指定。(感觉,还没测试)

在这里插入图片描述
这是xspips.c中定义的函数,发送和接收有 XSpiPs_TransferXSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。

  


一、轮询模式

米联客参考代码,SpiPs_Init中部分和官方例程流程一样,SpiPs_Read和SpiPs_Send为精简版感觉,也可以直接使用xspips.cXSpiPs_PolledTransfer 函数替代。

int SpiPs_Init(u16 SpiDeviceId)
{
   
   
	int Status;
	XSpiPs_Config *SpiConfig;

	/*
	 * Initialize the SPI driver so that it's ready to use
	 */
	SpiConfig = XSpiPs_LookupConfig(SpiDeviceId);
	if (NULL == SpiConfig) {
   
   
		return XST_FAILURE;
	}

	Status = XSpiPs_CfgInitialize((&SpiInstance), SpiConfig,<

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值