历史上的今天
返回首页

历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2019年10月17日 | STM32F103/302 SPI3 接口使用例程

2019-10-17 来源:eefocus

最近在用STM MCU 的SPI3,把一些使用时的注意点给大家记录一下,该注意的几点都注意了:


1,开GPIO时种


2,开SPI3时钟


3,GPIO引脚功能设定


4,如果有引脚复用的或与JTAG口有共用的引脚要对GPIO进行remap等


代码如下:


void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);  

// NSS

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

// SPI

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 |GPIO_Pin_5;         

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);


}


void SPI3_Configuration(void)

{

SPI_InitTypeDef SPI_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);

RCC_PCLK1Config(RCC_HCLK_Div2);  // 36M

SPI_I2S_DeInit(SPI3);

  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;

  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;

  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

  SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;  // SPI_NSS_Soft

  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;

  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

  SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI3,&SPI_InitStructure);

SPI_SSOutputCmd(SPI3, ENABLE);



SPI_Cmd(SPI3, ENABLE);

}


int main(void)

{

RCC_Configuration();

GPIO_Configuration();

SPI3_Configuration();

delay_init(72);

while(1)

{

GPIO_ResetBits(GPIOA,GPIO_Pin_15);

SPI_I2S_SendData(SPI3,0xAA55);

while( SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY));

SPI_I2S_ReceiveData(SPI3);

        GPIO_SetBits(GPIOA,GPIO_Pin_15);

delay_ms(1);

}

}


//仿真观看SPI3寄存器状态 -- 正常

成功输出信号波形

推荐阅读

史海拾趣

Heatron公司的发展小趣事

随着市场对个性化需求的增加,Heatron公司敏锐地捕捉到了这一趋势。公司成立了专门的定制化服务团队,致力于为客户提供从设计到生产的全方位解决方案。无论是特殊尺寸的加热器,还是具有特定功能的电加热元件,Heatron都能根据客户需求快速响应并高效完成。这种以客户为中心的服务模式,帮助Heatron在竞争激烈的市场中脱颖而出,赢得了众多知名企业的青睐。

DALLAS公司的发展小趣事

Dallas公司一直将技术研发作为公司发展的核心驱动力。公司投入大量资源用于半导体领域的技术研发,不断探索新的技术方向和产品应用。这种持续的技术研发投入使得Dallas公司能够不断推出具有创新性和竞争力的产品,保持了在市场中的领先地位。

Bussmann (Eaton)公司的发展小趣事

随着全球市场的不断扩张,Bussmann也加快了其全球化布局的步伐。目前,Bussmann的产品已在全球170多个国家销售,为各地的客户提供优质的电路保护解决方案。同时,为了满足不同客户的需求,Bussmann不断扩展其产品线,现已涵盖电气电源熔断器、电子电路板及小型熔断器、熔丝盒、熔丝座及断开开关等多个品类。这些产品的推出不仅丰富了Bussmann的产品线,也使其能够更好地满足市场的多元化需求。

以上五个故事展示了Bussmann (Eaton)公司在电子行业发展的不同阶段和关键节点,体现了其技术创新、市场拓展和全球化布局的重要历程。这些故事不仅反映了Bussmann在电路保护领域的领先地位,也展示了其在应对市场变化和客户需求方面的灵活性和实力。

General Cable公司的发展小趣事
采用CMOS技术,功率消耗很小,静态电流典型值为0.02μA,无需使用电源控制开关。
成都芯进(CrossChip)公司的发展小趣事

成都芯进电子一直致力于打破国外芯片市场的垄断地位,实现进口替代。他们在电流传感器领域取得了显著成果,产品已经全面进入工控、光伏、储能等领域,并获得了阳光电源、英威腾、欣旺达、安克等客户的认可。这一成就不仅展示了公司的技术实力和市场竞争力,也为国产芯片事业的发展做出了积极贡献。

Advanced Analog公司的发展小趣事

随着公司的不断发展和壮大,Advanced Analog开始积极拓展国际市场。公司在全球范围内设立了多个分支机构和销售网络,与众多国际知名企业和品牌建立了长期稳定的合作关系。通过参与国际电子展会和交流活动,Advanced Analog的产品和技术得到了更广泛的认可和赞誉,进一步提升了公司在国际市场的知名度和影响力。

问答坊 | AI 解惑

[精典书籍]蓝牙核心技术(供通信行业研究开发人员参考)

本书系由参与蓝牙标准制定的两位成员撰写,共四个部分17章,内容涉及目前蓝牙无线技术所面临的挑战\\应用模式\\蓝牙协议栈\\蓝牙协议子集,并对蓝牙技术的未来发展进行了预测,包括对互操作性和这项技术发展机遇的简单探讨,本书可谓是蓝牙技术的权威著 ...…

查看全部问答>

8051单片机灾践教程_asm51汇编语文与C51高级语言应用

8051单片机灾践教程_asm51汇编语文与C51高级语言应用…

查看全部问答>

LCD 图像的问题

    最近在调试LCD显示,一个上升状态或下降状态的箭头总是会闪动,可以看出绘图时的过程,当然,也不是特别慢。不知有没有大侠有类似经历,又是如何解决的呢?     分辨率是640*480,我现在怀疑是因为晶振频率14M达不到这个 ...…

查看全部问答>

触摸屏啊,出问题了

   自己仿着S3C2410a的开发板,根据需要自己做了一个底板(插在上面的核心板没做),画了PCB,只用了电源,串口和液晶屏(其它的没画),做好板之后又焊上器件,当把原来的核心板(系统在flash里)插在我做的底板上时,液晶可以正常开启,但是触摸它时 ...…

查看全部问答>

请教香主,I2C读过程不能中断吗?

I2C_Result I2C_EE_BufferRead(u8* pBuffer, u8 ReadAddr, u16 NumByteToRead){    /* Enable I2C1 acknowledgement if it is already disabled& ...…

查看全部问答>

汽车车门开关信号在CAN总线上传输的格式、数值是什么啊?

汽车车门开关信号在CAN总线上传输的格式、数值是什么啊?…

查看全部问答>

请教熟悉CC2500的朋友

对无线方面了解很少,想用CC2500+msp430f7724/2013做温度传感器模块,数据集中管理单元用CC2500+msp430f1611,TI网站上那个CC2500的例子看了半天,虽然有所收获,无奈外文惭愧,请问: 1、在一定的空间范围内,最多可以有多少个带CC2500的温度传 ...…

查看全部问答>

请教关于数字IC验证

各位大虾,小弟最近应聘了数字IC验证实习生岗位,自己一直对数字IC设计比较感兴趣,以后想从事这块的工作,想问问:数字IC验证这个岗位在芯片设计中属于什么地位?是不是可有可无?去公司了这块工作是不是算是相对核心的工作,然后就是数字IC验证和 ...…

查看全部问答>

大家一起聊聊怎样设计真正结构化的程序

最近发现很多网友在遇到问题时发出的C程序代码,程序中有着大量的寄存器的应用。对于C程序来说,本身是大同小异的,但是如果程序中有大量的寄存器,会导致没有使用过此款单片机的网友无法帮助解决问题,那么大家来谈怎样才能实现真正结构化的程序, ...…

查看全部问答>

6713BOOT问题+与FPGA通信问题

问题1:6713BOOT问题,我把6713设置为HPI的BOOT模式,但在调试的时候是通过JTAG调试,就是说我把DSP连上仿真器,但是HPI口没有连接主机,那么上电后DSP回怎么工作?还是会先检测BOOT引脚设置然后启动HPI的BOOT?还是怎么操作的?至今还没有看到关于 ...…

查看全部问答>