一安装 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博客
|