当前位置: 首页 > news >正文

STM32F103经SPI总线向写Micro SD卡

将读取的PA0口的ad数据存入到Micro SD卡中,利用SPI2口写入。
通过CubeMX创建一个工程框架,在这里插入图片描述

采用外部12MHz晶振,时钟函数为

void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
//  RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK){Error_Handler();}
}

PA0的代码如下
static void MX_ADC1_Init(void)
{

ADC_ChannelConfTypeDef sConfig = {0};

hadc1.Instance = ADC1;

hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
// hadc1.Init.ContinuousConvMode = DISABLE; //5.15
hadc1.Init.ContinuousConvMode = ENABLE; // 启用连续转换模式

hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 2; //通道个数选择
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
写入SD卡后,如图所示。
在这里插入图片描述
已经能够分别使用SPI和SDIO两种方式写入数据,从而实现将单片机产生的导入excel中画图。

相关文章:

  • 怎么使用python进行PostgreSQL 数据库连接?
  • Web性能优化的未来:边缘计算、AI与新型渲染架构
  • WebMvcConfigurer介绍-笔记
  • 算法刷题(Java与Python)1.二分查找
  • 车道线检测----CLRERNet
  • 【云实验】基于对象存储OSS实现企业门户网站托管
  • RNope:结合 RoPE 和 NoPE 的长文本建模架构
  • 如何解决Move to iOS 不起作用的问题?
  • 车道线检测----CLRNet
  • C语言图案代码大全:从基础到高级
  • Recycling Krylov Subspace 方法解释与开源实现
  • ECMAScript标准:JavaScript的核心
  • 数据治理域——数据同步设计
  • python基础语法(三-中)
  • Jenkins 执行器(Executor)如何调整限制?
  • [250516] OpenAI 升级 ChatGPT:GPT-4.1 及 Mini 版上线!
  • 服务器死机了需要检查哪些问题
  • HarmonyOs开发之——— ArkWeb 实战指南
  • python训练 60天挑战-day27
  • Python中in和is关键字详解和使用
  • 首次公布!我国空间站内发现微生物新物种
  • 官方通报汕头违建豪宅“英之园”将强拆:对有关人员严肃追责问责
  • 长三角体育节回归“上海时间”,首次发布赛事旅游推荐线路
  • 著名心血管病学专家李国庆教授逝世,享年63岁
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 悬疑剧背后的女编剧:创作的差异不在性别,而在经验