与外部 SPI 扩展模块进行通信
2020.09.04
目标:使用 stm32F769ni discovery 与外部 SPI 扩展 mcp23s17 模块进行通信
重点:如何对具有 SPI 接口的外部模块进行软件抽象
上述一至四节,主要以 USART 子模块为例进行了深入的 ST HAL 驱动构架分析。本节讨论如
何应用 ST HAL 驱动构架来实现对片外模块的驱动。
本 节 以 MCP23S17 芯 片 为 例 , 有 关 MCP23S17 的 详 细 文 档 , 可 参 考
https://www.microchip.com.cn/newcommunity/中对应中英文数据手册。
简单地说,这是个通过 SPI 总线转换为 16 个(分为两个 8 位 bank)可配置 IO 的芯片。
下图是 SPI 接口
R/W 位,0:写;1:读
每储存器长度为一字节 8bits,因此,任意一次读写需要 3 字节 24bits。
相比于 MCU 片内模块,片外模块的储存器无法通过硬件地址内存映射的方法进行寻址,所
有的读写操作都必须通过 SPI 接口。
下面,我们先看一下基于 arduino 的 C++面向对象对 MCP23S17 的软件封装,这来至于通过
github.com 检索“MCP23S17 arduino”关键词获得源代码。
评论0