STM32F030软件SPI控制74HC165
仅仅作为一个调试记录,供硬件设计使用。
环境
硬件:NUCLEO-F030R8。某宝购买的74HC165模组,接了 888 路按键。
开发环境:Win10+IAR EWARM 8.22.1
原理图
只是一个示意性的原理图,我自己不想画了,虽然图片的IO脚和主芯片不同。
我用的芯片型号为STM32F030R8。对应的实际IO接线如下:
165侧 芯片侧
1 PL -> PA4 SPI1_NSS
2 CP CLK -> PB3 SPI1_SCK
9 QH DS -> PA6 SPI1_MISO
15 CE -> GND
STM32CubmeMX 配置
本次使用软件模拟时序实现。
GPIO 配置
代码
利用 Cube 生成代码后,添加一下代码。
/*
1 PL -> PA4 SPI1_NSS
2 CP CLK -> PB3 SPI1_SCK
9 QH DS -> PA6 SPI1_MISO
*/
uint8_t HC165ReadData(void)
{uint8_t dat=0;HAL_GPIO_WritePin(CLK_GPIO_Port, CLK_Pin, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, PL_Pin, GPIO_PIN_RESET);HAL_Delay(1);HAL_GPIO_WritePin(GPIOA, PL_Pin, GPIO_PIN_SET);for(uint8_t i=0;i<8;i++){dat=dat<<1;if (HAL_GPIO_ReadPin(GPIOA, DS_Pin)==1)dat=dat+1;HAL_GPIO_WritePin(CLK_GPIO_Port, CLK_Pin, GPIO_PIN_RESET);HAL_Delay(1);HAL_GPIO_WritePin(CLK_GPIO_Port, CLK_Pin, GPIO_PIN_SET);}HAL_GPIO_WritePin(CLK_GPIO_Port, CLK_Pin, GPIO_PIN_RESET);return ~dat;
}
我在主循环中不断读取按键信息。主循环代码如下:
while (1){HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);//HAL_SPI_Receive(&hspi1, &cmd, 1, 1000);key1=HC165ReadData();if (key1!=0x00 && key1!=key2) {//有按键sprintf(RxBuffer, "Key is %d\n", key1);printf(RxBuffer);key2=key1;}HAL_Delay(500);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
其中变量 key1 和 key2 用来保存按键数据。下面是运行串口输出。
注意:以上只是测试代码。工程中绝对不会这样书写。
系统完整照片
用的是杜邦线连接,有点丑。测试系统将就用一下。
STM32F030软件SPI控制74HC165相关推荐
- FPGA进阶篇--SPI控制双通道16bit串行DAC8532
文章目录 一.芯片手册关键点笔记 1.时序 2.寄存器 二.FPGA控制DAC8532驱动 DAC8532_drive_project DAC8532_DATA_Ctrl模块: spi_data_tr ...
- 【51单片机快速入门指南】5.3:SPI控制晶联讯JLX12864G_08602 LCD屏幕
目录 示例程序 JLX12864G_08602.c JLX12864G_08602.h JLX12864G_08602_Font.c JLX12864G_08602_Font.h 测试程序 main. ...
- 【51单片机快速入门指南】5:软件SPI
目录 硬知识 SPI协议简介 SPI接口介绍 SPI接口连接图 SPI数据传输方向 SPI传输模式 软件SPI程序源码 Soft_SPI.c Soft_SPI.h 普中51-单核-A2 STC89C5 ...
- 【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制
目录 硬知识 IO 口扩展方式-串转并 74HC595 芯片介绍 硬件设计 测试源码 HC74595.c HC74595.h main.h 实验现象 SPI控制 普中51-单核-A2 STC89C52 ...
- STM-32:SPI通信协议/W25Q64简介—软件SPI读写W25Q64
目录 一.SPI简介 1.1电路模式 1.2通信原理 1.3SPI时序基本单元 1.3.1起始和终止 1.3.2交换字节 二.W25Q64 2.1W25Q64简介 2.2W25Q64硬件电路 2.3W ...
- STM32硬件SPI控制TM1638 按键数码管LED显示模块
STM32硬件SPI控制TM1638按键数码管LED显示模块 从淘宝买来的,TM1638专门是控制LED的,LED组合起来就可以变成数码管,还有按键,这个我就没管了,不想管了,发这个帖子只是为了记 ...
- 硬件SPI控制ST7789V
文章目录 前言 一.能用的方法有那些? 1.利用硬件UART模拟SPI,实现9位数据发送 2.搭建一个数字逻辑电路,人为实现9位spi发送 3.发送两组8位SPI 二.具体操作 1.具体实现 总结 前 ...
- STM32F103C8T6硬件SPI控制6针/7针0.96寸OLED显示屏
OLED介绍 OLED主要参数 1.高分辨率:12864(和12864LCD相同分辨率,但该OLED屏的单位面积像素点多). 2.广可视角度:大于160°. 3.低功耗:正常显示时0.04W. 4.宽 ...
- GD32F303调试小记(二)之SPI(软件SPI、硬件SPI、硬件SPI+DMA)
前言 目前有一个项目中用到了TFT-LCD,其驱动芯片为ILI9341.为更好的达到显示效果,在最终的代码中我们会使用单片机自带的硬件SPI+DMA模块(由于调试过程中SPI+DMA输出的波形没能驱屏 ...
最新文章
- 使用opencv训练目标检测模型基于cascade模型
- IListT和ListT区别
- 无法定位软件包 docker-ce_初三一模考试结束后,如何准确给孩子定位,平衡自招和裸考的关系...
- 指数基金日涨跌幅python_看懂巴菲特推荐的指数基金定投,Python验证
- EF学习杂记39:如何重置Relationships
- JScript 和 VBscript访问网络上的打印设备
- linux脚本 sed,Linux脚本利器sed
- go-import下划线的作用
- RubikFX:用JavaFX 3D解决魔方难题
- L3-016 二叉搜索树的结构 (30 分)
- FastDFS搭建文件服务器
- python批量下载抖音视频_Python一键批量下载抖音无水印视频
- mysql分区数据覆盖_彻底搞懂MySQL分区
- 计算机技术 安防 工程师考试,信息安全工程师考试科目有哪几门
- 沉船会有什么_泰坦尼克号沉船之谜
- [机器学习与数据分析] 数据分析常用方法
- stm32中的或运算 ||
- 《速度与激情9》中有哪些槽点?
- 自媒体运营之【流量的价值】
- 图像金字塔实现图像缩放_一个简单的VueJS组件,用于图像放大/产品缩放