
《STM32从零开始学习历程》——SPI读取FLASH ID
发布日期:2021-05-10 01:33:09
浏览次数:21
分类:精选文章
本文共 3626 字,大约阅读时间需要 12 分钟。
STM32 SPI������FLASH ID
������������
���������������������STM32������SPI������������������������������FLASH���������ID���������������������������SPI������������������������������ FLASH ������������������������ID���
������������
���������������������������F4������������������������������������������
- SPI1������������������FLASH������������
- FLASH���������
- USART1������������������������������
������������������������������������SPI���������������GPIO���������������
- SCK���������������������PB3
- MISO���������������/output������PB4
- MOSI���������������������PB5
- F_CS���Flash������������������PB14
������������������
������������������
- ������SPI1���������������
RCC_APB2PeriphClockCmd(RCC_FLASH_SPI_CLK, ENABLE)
- ������GPIO���������������������
RCC_AHB1PeriphClockCmd(RCC_FLASH_SPI_SCK_GPIO_CLK | RCC_FLASH_SPI_MOSI_GPIO_CLK | RCC_FLASH_SPI_MISO_GPIO_CLK | RCC_FLASH_SPI_CS_GPIO_CLK, ENABLE)
���������GPIO������
- ������������������������������������������
GPIO_PinAFConfig(FLASH_SPI_SCK_GPIO_PORT, FLASH_SPI_SCK_SOURCE, FLASH_SPI_SCK_AF);GPIO_PinAFConfig(FLASH_SPI_MOSI_GPIO_PORT, FLASH_SPI_MOSI_SOURCE, FLASH_SPI_MOSI_AF);GPIO_PinAFConfig(FLASH_SPI_MISO_GPIO_PORT, FLASH_SPI_MISO_SOURCE, FLASH_SPI_MISO_AF);
- ���������������������������������������
GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = FLASH_SPI_SCK_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(FLASH_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
���������SPI������
- ���������������������CPOL������������������
SPI_InitTypeDef SPI_InitStructure;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;SPI_Init(FLASH_SPI, &SPI_InitStructure);
- ������SPI���������
SPI_Cmd(FLASH_SPI, ENABLE);
������������������������
- ���������������
uint8_t SPI_FLASH_ByteWrite(uint8_t data) { // ���������������������Flash������������ // ������������������������������ // ������10��������������� uint32_t SPITimeOut = 10 * SPIT_FLAG_TIMEOUT; while (SPI_I2S_GetFlagStatus(FLASH_SPI, SPI_I2S_FLAG_TXE) == RESET) { SPITimeOut--; if (SPITimeOut == 0) { // ������������ return SPI_TIMEOUT_UserCallback(1); } } SPI_I2S_SendData(FLASH_SPI, data); // ������������������ SPITimeOut = 10 * SPIT_FLAG_TIMEOUT; while (SPI_I2S_GetFlagStatus(FLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET) { SPITimeOut--; if (SPITimeOut == 0) { // ������������ return SPI_TIMEOUT_UserCallback(2); } } return SPI_I2S_ReceiveData(FLASH_SPI);}
- ������ID���
uint8_t SPI_FLASH_Read_ID(void) { // ������������ FLASH_SPI_CS_LOW(); // ������������������ SPI_FLASH_ByteWrite(0xAB); SPI_FLASH_ByteWrite(0xFF); SPI_FLASH_ByteWrite(0xFF); SPI_FLASH_ByteWrite(0xFF); // ������������������ uint8_t id = SPI_FLASH_ByteWrite(0xFF); FLASH_SPI_CS_HIGH(); return id;}
������������������
- ������������������������
SPI_FLASH_Init();
- ������FLASH ID���
int main(void) { // ��������������� NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); delay_init(168); uart_init(115200); LED_Init(); SPI_FLASH_Init(); printf("\r\n������ID: 0x%x\r\n", SPI_FLASH_Read_ID()); while (1) { // ��� Carey stayed here looking for exit condition }}
������������
���������������������������������������������������������������������������������������������������ID���������������������������
������ID: 0x17
���������������������������������������������Flash���������������������������
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月19日 17时58分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
oracle查看字符集后修改oracle服务端和客户端字符集的步骤
2021-05-10
Oracle闪回查询总结
2021-05-10
Linux环境编程--03 文件IO
2021-05-10
使用C语言获取文件夹地址的方法收藏
2021-05-10
微盟实习
2021-05-10
HDU——3374 String Problem (最大最小表示法+循环节+kmp)
2021-05-10
求1-n中x(0-9)的个数
2021-05-10
char与varchar的区别
2021-05-10
Linux之shell脚本实现ssh登录报警
2021-05-10
《五、企业级SVN运维实战:SVN禁止删除和强制注释》
2021-05-10
docker实战练习02-tomcat安装
2021-05-10
SQL server 2016安装
2021-05-10
Excuses, Excuses! map的应用
2021-05-10
搭建nfs服务器练习
2021-05-10
linux基础:命令行的使用(shell)、shell里的快捷键、linux基础设置
2021-05-10
Angular动态表单使用
2021-05-10
php中奖概率算法,刮刮卡/大转盘抽奖算法
2021-05-10
linux 编译出现的错误
2021-05-10
如何保证消息队列的高可用?
2021-05-10
Vue 判断对象是否存在某个属性/字段
2021-05-10