一安装 Altium Designer18 并用其绘制 stm32 最小系统的电路原理图
1.下载与安装
2.文件配置
打开下载的 AltiumDesigner 软件,选择 license ,选择文件进行保存。
3.绘制 stm32 最小系统的电路原理图
3.1绘制前目标
使用 Altium Designer 绘制一个 stm32 最小系统的电路原理图。
何为stm32 最小系统的电路原理图
最小系统为单片机工作的最低要求,不含外设控制,原理简单,分析最小系统是嵌入式入门的基础。
stm32 最小系统的电路原理图如下,我们的目标就是绘制出下面的原理图。
3.2创建工程
点击 File
-> New
-> Project
-> PCD Project
,新建一个 PCD 工程,得到如下界面:
右击 PCD_Project1.PrjPCB
,选择 Add New to Project
-> Schematic
,新建一个原理图,等待加载完毕后,得到如下界面:
3.3元件库
将三个元件库加入到里面
3.4绘制开始
打开的元件库里找到 stm32f103c8t6 芯片,并双击打开,然后点击左将元件放在中间
将所有引脚都延长,可以复制粘贴
选择下面的元件
3.5绘制结果
STM32芯片
R:Miscellaneous Devices LC.IntLib 元件库中搜索 0805 10k
stm32 去耦电路
晶振电路
复位电路
降压电路
下载方式选择及程序烧录接口
输入、输出电源
排针
4 SD卡原理图
5.最终原理图STM32C8T6+SD
二、掌握SD卡协议原理,用STM32F103完成对SD卡的数据读取(fat文件模式)。
sd卡协议
下图是SD卡的体系架构,可以看到内部包含了一系列的寄存器:
SD Memory Card Architecture
各个寄存器的详细信息如下:
SD Memory Card Registers
SD配置寄存器提供SD卡的特殊特性信息,其大小为64位。该寄存器由厂商编程,主机不能对它进行编程。
1.stm32cube配置
我用的这个芯片
sys配置
配置PA4
SPI1
USART1
时钟配置
最后一步
2.文件工程配置
将这两个文件放在本目录下
添加下面代码、
HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1); //enable uart
printf(" mian \r\n");
Get_SDCard_Capacity(); //得到使用内存并选择格式化
WritetoSD(WriteBuffer,sizeof(WriteBuffer));
HAL_Delay(500);
WriteBuffer[0] = WriteBuffer[0] +10;
WriteBuffer[1] = WriteBuffer[1] +10;
write_cnt ++;
while(write_cnt > 10)
{
printf(" while \r\n");
HAL_Delay(500);
}
修改user_diskio.c文件
1.添加头文件 #include "diskio.h" /* Declarations of disk functions */
#include "SDdriver.h"
2.将下面代码放在指定位置,修改函数内容:USER_initialize、USER_status、USER_read、USER_write、USER_ioctl
uint8_t res;
res = SD_init();//SD_Initialize()
if(res)//STM32 SPI的bug,在sd卡操作失败的时候如果不执行下面的语句,可能导致SPI读写异常
{
SPI_setspeed(SPI_BAUDRATEPRESCALER_256);
spi_readwrite(0xff);//提供额外的8个时钟
SPI_setspeed(SPI_BAUDRATEPRESCALER_2);
}
if(res)return STA_NOINIT;
else return RES_OK; //初始化成功
switch (pdrv)
{
case 0 :
return RES_OK;
case 1 :
return RES_OK;
case 2 :
return RES_OK;
default:
return STA_NOINIT;
}
uint8_t res;
if( !count )
{
return RES_PARERR; /* count不能等于0,否则返回参数错误 */
}
switch (pdrv)
{
case 0:
res=SD_ReadDisk(buff,sector,count);
if(res == 0){
return RES_OK;
}else{
return RES_ERROR;
}
default:
return RES_ERROR;
}
可以直接下载我后面参考博客的代码。
3.效果展示
参考链接:
(57条消息) SD卡数据读取_m0_61816657的博客-CSDN博客