收藏 分享(赏)

[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十五章.docx

上传人:最好的沉淀 文档编号:17430886 上传时间:2023-10-10 格式:DOCX 页数:4 大小:102.24KB
下载 相关 举报
[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十五章.docx_第1页
第1页 / 共4页
[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十五章.docx_第2页
第2页 / 共4页
[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十五章.docx_第3页
第3页 / 共4页
[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十五章.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、嵌入式系统设计(基于STM32F429)第 15 章课后题参考答案1. SPI 多机通信时,主机怎么区别各个从机? 答:来自主机的片选信号用于选择从机,它通常是一个低电平有效信号,拉高时从机与 SPI 总线断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。2. 描述 CPOL 极性和 CPHA 相位的组合形式。答:根据 CPOL 位和 CPHA 位的选择,有 4 种SPI 模式可用。SPI 模式CPOL 位CPHA 位空闲时时钟极性采样/移位数据的时钟相位000低电平第一个边沿,数据在上升沿采样,在下降沿移出101低电平第二个边沿,数据在下降沿采样,在上升沿移出210高电平第一

2、个边沿,数据在下降沿采样,在上升沿移出311高电平第二个边沿,数据在上升沿采样,在下降沿移出参考教材 15.1.3 小节。3. 根据 SPI 结构,描述 SPI 怎么实现读操作,并绘制相应的数据传输流图。答:根据 通信结构,MOSI、MISO、SPI 主机和 SPI 从机内部的数据寄存器构成一个数据串行传输的环路, 在时钟的控制下实现数据的环形传输。因此。SPI 主机读数据时,需要先写任意数据到SPI_DR 寄存器。操作流程如下:通过将SPE位置1来使能SPI将任意数据数据写入SPI_DR等待至RXNE=1,读取SPI_DR以获取接需要读取的数据4. 说明 SPI 接口 Flash 各个引脚的

3、功能,以及Flash 怎么和 SPI 控制器连接。答:以 SPI 接口Flash W25Q16 为例。/CS:片选引脚,低电平有效。SPI 通信时片选信号一般使用GPIO 单独控制。DO:数据输出。/WP:写保护,低电平时只能读,高电平时可读写。GND:接地。DI:数据输入。CLK:时钟。/HOLD:数据暂停控制,低电平代表暂停,高电平工作,通常用于多个设备共享一个 SPI,如果只有一主一从,可以把这引脚接 VCC。VCC:2.73.6V。W25Q16 和 STM32F429 连接电路图如下所示:5. 尝试编写 SPI 主机的软件模拟程序,使用SPI 模式 2。答:在 SPI 模式 2 下,C

4、POL=1,表示时钟的空闲状态为高电平。CPHA=0,数据在第一个边沿(下降沿) 采样,并且数据在接下来时钟信号的上升沿移出。假设 SPI 通信引脚对应关系如下:PF7SCK PF8MISOPF9MOSIPF6CS#define SCK_H GPIO_SetBits(GPIOF, GPIO_Pin_7) #define SCK _L GPIO_ResetBits (GPIOF, GPIO_Pin_7) #define MOSI_H GPIO_SetBits(GPIOF, GPIO_Pin_9) #define MOSI_L GPIO_ResetBits (GPIOF, GPIO_Pin_9)#

5、define MISOGPIO_ReadInputDataBit (GPIOF, GPIO_Pin_8)#define CS_H GPIO_SetBits(GPIOF, GPIO_Pin_6) #define CS _L GPIO_ResetBits (GPIOF, GPIO_Pin_6)(1)SPI GPIO 引脚初始化void SPI_GPIO_Config(void)GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);/设置引脚复用/*! 配 置 SPI 引 脚

6、 : SCK 、 MOSI 、 CS*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOF, &

7、GPIO_InitStructure);/*! 配 置 SPI 引 脚 : MISO */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(GPIOF, &GPIO_InitStructure);(2)SPI 模式 2 通信函数uint8_t SOFT_SPI_RW_MODE2(uint8_t byte)uint8_t i,Temp=0;CS _L; /使能 SPI 通信for(i=0;i8;i+)/ 循环 8 次if(byte&0x80)elseM

8、OSI_H; /若最到位为高,则输出高MOSI_L;/若最到位为低,则输出低byte = 1;/ 低一位移位到最高位delay_us(1);SCK_L;/拉低时钟Temp 擦除 - 烧写。8. 编写程序,向 W25Q16 连续写 100 个字节数据,写入开始地址为 0x03。答:参考教材 15.4 小节中 SPI Flash 常用操作函数 中的 Flash 任意写函数。/* brief 对 FLASH 写入数据,调用本函数写入数据前需要先擦除扇区* parampBuffer,要写入数据的指针* param WriteAddr,写入地址* param Num,写入数据长度* retval 无*/void SPI_Flash_Write(u8* pBuffer, u32 WriteAddr, u16 Num)。pBuffer:假设数据存储在数组 u8 Data_Buff100 WriteAddr:0x03Num:100功能实现函数:SPI_Flash_Write(Data_Buff, 0x03, 100);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报