: .
基于 STM32 的 PCL6045B 开发体会
基于 STM32 的 PCL6045B 开发体会 上两个月做了个 关于尿残渣的新项目,用到了电机驱动芯片 PCL6045BL 。 这个系统方案有一个 20 余年工作经验的老工程师提出来, 主要采用的是 STM32 操作 PCL6045 ,进而控制多轴电机运 动。于是公司从每个不同项目组抽选人员组成了一个团队。 本人负责软件部分,负责编写驱动程序和调试电路板。 全新项目,有一定挑战性。经过分析,决定采用 STM32 总 线方式( FSMC )驱动 PCL6045B 。对比 FSMC 的四种总线 操作时序和 PCL6045B 操作时序。认为应该选用 STM32 的 PCCARD 模式操作。从数据库中查找了一些文献资料,就 开干起来了。 两名硬件工程师按我的需求设计好硬件电路板。接下来分成 以下几个步骤进行: 首先就是建立通讯。 让 ARM 能跟 PCL6045B 建立起来通讯。 这一步主要就是配置 STM32 的 FSMC 为 PCCARD 模式, 配置的过程就是按官方手册上配置的。先系统初始化配置好 STM32 的时钟(不赘述) 。然后就是初始化端口,这里需要 注意的是,要将跟 FSMC 相关的端口都设置为特殊功能口 AF 。如下:
void PCCARD_IO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD RCC_APB2Periph_GPIOE RCC_APB2Periph_GPIOF RCC_APB2Periph_GPIOG,ENABLE);
= GPIO_Pin_1 GPIO_Pin_2 GPIO_Pin_3 GPIO_Pin_4 GPIO_Pin_12 GPIO_Pin_5; = GPIO_Speed_50MHz; = GPIO_Mode_AF_PP; GPIO_Init(GPIOF, &GPIO_InitStructure);
= GPIO_Pin_7 GPIO_Pin_8 GPIO_Pin_9 GPIO_Pin_10 GPIO_Pin_11 GPIO_Pin_12 GPIO_Pin_13 GPIO_Pin_14 GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);
= GPIO_Pin_14 GPIO_Pin_15 GPIO_Pin_10 GPIO_Pin_9 GPIO_Pin_8 GPIO_Pin_1 GPIO_Pin_0;
GPIO_Init(GPIOD, &GPIO_InitStructure);
= GPIO_Pin_4 GPIO_Pin_5;//NOE , NWE 引脚
GPIO_Init(GPIOD, &GPIO_InitStructure);
= GPIO_Pin_10;//cs
GPIO_Init(GPIOG, &GPIO_InitStructure);
}
接下来就是配置 FSMC PC 卡模式时序。如下: void PCCARD_Init(void)
{
FSMC_PCCARDInitTypeDef
FSMC_PCCARDInitStructure;
FSMC_NAND_PCCARDTimingInitTypeDef p;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);////
= 0x02;
= 0x04;
= 0x02;
= 0x03;
=
FSMC_Waitfeature_Enable ; // 使能等待 FSMC_PCCARDInitStr
基于STM32的PCL6045B开发体会 来自淘豆网m.daumloan.com转载请标明出处.