jjzjj

STM32 SPI驱动SD卡发送CMD命令没有返回正确值

       最近调试SD卡的时候遇到了发送CMD命令但没有收到正确回应的问题。先简单叙述一下开发环境,我使用的是STM32CubeMX+MDK5,板子用的是原子哥F407探索者。这次的需求是使用SPI驱动SD卡,并建立FATFS文件系统用于管理卡内数据,另外使能了串口1并重定向了printf到串口以便直接观察。       基本了解SD卡驱动流程后就直接开始实战操作(SD卡的驱动流程、卡的驱动及挂载文件系统的代码都可以在网上找,很容易能够找到,这里就不赘述了),在下载的代码基础上用if语句判断f_mkfs、f_mount和f_open函数是否成功执行,成功返回0,否则返回错误代码。建立工程文

FPGA配置高速ADC篇(3)_3线SPI配置时序分析

​ 注:扫码关注小青菜哥哥的weixin公众号,免费获得更多优质的核探测器与电子学资讯~​上篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了4线SPI配置时序。本篇将以AnalogDevice(ADI)的多通道高速ADC芯片AD9249为例,介绍3线SPI读写配置时序。另外,大家如果想详细了解AnalogDevice(ADI)公司的关于SPI的所有内容,推荐大家在其官网阅读AN-877。AD9249的SPI控制模块包含4根信号线,即CSB1、CSB2、SDIO以及SCLK。但CSB1、CSB2可以一起由CSB来控制,实际上就是3线SPI。由于3线SPI数据的读、写操作在同

stm32通用外部spi下载算法实现

参考硬汉嵌入式:【实战技能】任何支持SWD接口的单片机都可以方便移植的SPIFlash烧写算法制作_哔哩哔哩_bilibili该up主提供的stm32H7的模板工程,目前需求是实现基于正点原子探索者stm32f407zet6+W25Q128下载算法实现步骤使用cubemx建立一个LED工程,主要是配置系统时钟复制系统时钟配置函数复制stm32f4的hal库文件和添加头文件路径添加必要的文件模板工程修改gpio模拟spi外设的引脚system_stm32f4xx.c文件修改FlashDev.c文件的的FlashDevice内部的参数,主要是flash的大小,和算法名称修改输出文件名和mcu型号选

FPGA中AXI协议的理解及接口信号的中文描述

AXI协议AXI简介AXI4所采用的是一种READY,VALID握手通信机制,即主从模块进行数据通信前,先根据操作对各所用到的数据、地址通道进行握手。主要操作包括传输发送者A等到传输接受者B的READY信号后,A将数据与VALID信号同时发送给B,这是一种典型的握手机制。AXI总线支持burst传输。Burst传输(翻译成突发传输或者连续传输),指在同一行中相邻的存储单元可以连续传输的方式,只需要提供起始地址和突发长度,就可以自动的对后面同样数量的存储单元进行读/写操作,而不需要连续提供地址图1AXI4握手AXI总线分为五个通道:·读地址通道,包含ARVALID,ARADDR,ARREADY信

学习笔记(一) AXI协议原理及IP核封装

注:本笔记是根据赛灵思官方文件UG1037进行记录简介:AXI(AdvancedeXtensibleInterface)即高级可扩展接口,他是ARM公司开发的AMBA(高级微控制器总线结构)中一个重要的部分。AXI的第一个版本是在2003年发布的AMBA3.0中,而现在所使用的AXI4版本发布于2010年的AMBA4.0中。AXI接口的三种类型:AXI4:高性能存储映射接口AIX4-Lite:简化版的AXI4接口,用于较少数据量的存储映射通信AXI4-Stream:用于高速数据流传输在这先搞明白什么是存储映射(MemoryMap)。如果一个协议是存储映射的,那么主机所发出的会话(无论读或写)就

STM32--7针0.96寸OLED屏幕显示(4线SPI)

本文介绍基于STM32F103C8T6+0.96寸OLED(7针)的显示(完整程序代码见文末链接)一、简介OLED,即有机发光二极管(OrganicLightEmittingDiode)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。关于OLED基础知识介绍可参考我的另外一篇博客,建议阅读本文前先了解下,链接如下:https://blog.csdn.net/u011816009/article/details/130119426本文是基于7pin0.96寸OL

FPGA配置高速ADC篇(2)_4线SPI配置时序分析

​ 注:扫码关注小青菜哥哥的weixin公众号,免费获得更多优质的核探测器与电子学资讯~​本篇将以德州仪器(TI)的高速ADC芯片——ads52j90为例,进行ADC的4线SPI配置时序介绍与分析。从ads52j90的数据手册我们不难发现,其SPI控制模块主要包含4根信号线,即SEN、SCLK、SDIN以及SDOUT。TI公司对其产品SPI配置信号的命名方式与通用的SPI信号命名方式不一样,但实际上SEN对应CSB、SDIN对应SDI、SDOUT对应SDO、SCLK不变。1,SEN:控制ADC的SPI读写的使能信号;2,SDIN:FPGA写入ADC的配置数据(寄存器地址和对应地址的数据);3,

STM32 HAL库函数HAL_SPI_Receive_IT和HAL_SPI_Receive的区别

背景前段时间开发一个按键板驱动,该板用的STM32F103系列单片机,前任工程师用STM32CubeMX生成的工程,里面全是HAL库调用,我接手后,学习了下HAL库的用法,踩坑不少,特别是带IT后缀的函数,初学者对其的理解很容易出错,特此记录一下。项目中的按键板通过SPI总线与主板连接,按键板是Slave设备,因此无法确定什么时候收到主板的读写请求,要么轮询SPI控制器的rxfifo是否非空,要么依赖SPI控制器提供的中断机制,在中断里将rxfifo内容读出来。两种Receive流程说明一下,SPI的BPW(bitsperword)设置为8,因此文中一个word的size就是一个字节。轮询:H

GD32F103 硬件SPI通信

1.SPI的通信原理SPI既可以做主机也可以做从机。当做主机时。MOSI,SCK,CS都是作为输出。 而作为从机时。MOSI,SCK,CS都是作为输入。 所以SPI的硬件电路应该实现这样的功能。2.GD32/STM32的SPI框图 1.GD32框图如下图做主机的数据流向: 如下图做从机的数据流向:  2.STM32框图 通过一些寄存器的配置来控制电路。跟GD32的差不多。波特率配置越高,采样越快。SPI的速率越快。3.SPI的寄存器介绍 1.控制寄存器0(SPI_CTL0)  2.控制寄存器1(SPI_CTL1) 3. 状态寄存器(SPI_STAT)  4.数据寄存器(SPI_DATA) 4.

实验(三):SPI应用:读写串行FLASH 实验

一、实验目的与任务实验目的:1.学习对SPI的使用;2.掌握KEIL5的仿真与调试。任务:1. 根据要求编写程序,并写出原理性注释;2.将检查程序运行的结果,分析一下是否正确;3.完成所建工程的验证调试。二、实验要求以一种使用SPI通讯的串行FLASH存储芯片的读写实验为大家讲解STM32的SPI使用方法。实验中STM32的SPI外设采用主模式,通过查询事件的方式来确保正常通讯。三、实验内容及步骤本实验板中的FLASH芯片(型号:W25Q64)是一种使用SPI通讯协议的NORFLASH存储器,它的CS/CLK/DIO/DO引脚分别连接到了STM32对应的SPI引脚NSS/SCK/MOSI/MI