实验3:CubeMx+Proteus+STM32 IO口模拟SPI协议的四种模式

通过CubeMx配置STM32,使用Proteus进行SPI接口模拟,详细解释了四种SPI工作模式,并提供仿真测试及压力测试结果,实现Master端单字节及缓冲区收发功能。

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

目标:

实现spi的Master端。

参考资料:

http://bbs.elecfans.com/jishu_441914_1_1.html

这篇文章讲的非常直观易懂,看完就明白了。

 

1、首先配置口线,串口用来输入和打印,四个io口用来模拟spi,原本准备在一个单片机上同时模拟主从,但貌似不太可行,这种模拟的方式都是阻塞的。

 

2、proteus连接口线,放spi调试器和示波器,本来准备放个逻辑分析仪,但既然有spi调试器,用起来更方便,就没弄逻辑分析仪。

 

3、打开cubemx生成的工程,首先修改 main.h,加入口线的控制函数:

/* Private defines -----------------------------------------------------------*/
#define MASTER_CLK_Pin GPIO_PIN_1
#define MASTER_CLK_GPIO_Port GPIOC
#define MOSI_Pin GPIO_PIN_2
#define MOSI_GPIO_Port GPIOC
#define MISO_Pin GPIO_PIN_3
#define MISO_GPIO_Port GPIOC
#define CS_Pin GPIO_PIN_4
#define CS_GPIO_Port GPIOC
/* USER CODE BEGIN Private defines */


#define SCLK_SET_H  HAL_GPIO_WritePin(MASTER_CLK_GPIO_Port, MASTER_CLK_Pin, GPIO_PIN_SET)
#define SCLK_SET_L  HAL_GPIO_WritePin(MASTER_CLK_GPIO_Port, MASTER_CLK_Pin, GPIO_PIN_RESET)
#define MOSI_SET_H  HAL_GPIO_WritePin(MOSI_GPIO_Port, MOSI_Pin, GPIO_PIN_SET)
#define MOSI_SET_L  HAL_GPIO_WritePin(MOSI_GPIO_Port, MOSI_Pin, GPIO_PIN_RESET)
#define MISO_READ   HAL_GPIO_ReadPin(MISO_GPIO_Port, MISO_Pin)
#define CS_H        HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET)
#define CS_L        HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET)

uint8_t SPI_RW_BYTE_MODE0(uint8_t data);
uint8_t SPI_RW_BYTE_MODE1(uint8_t data);
uint8_t SPI_RW_BYTE_MODE2(uint8_t data);
ui
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值