士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

目录

前言:

士兰微电子介绍

士兰微 SC32F5432介绍

士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

开漏输出模式

TTL输入模式


前言:

下面是对我在工作时公司所使用的一款国产芯片(士兰微 SC32F5432)开发过程所遇到的一些问题的记录与解决。

士兰微电子介绍

杭州士兰微电子股份有限公司(600460)坐落于杭州高新技术产业开发区,是专业从事集成电路芯片设计以及半导体微电子相关产品生产的高新技术企业。公司成立于1997年9月,总部在中国杭州。2003年3月公司股票在上海证券交易所挂牌交易,是第一家在中国境内上市的集成电路芯片设计企业。得益于中国电子信息产业的飞速发展,士兰微电子已成为国内规模最大的集成电路芯片设计与制造一体(IDM)的企业之一,其技术水平、营业规模、盈利能力等各项指标在国内同行中均名列前茅。士兰微电子建在杭州钱塘新区的集成电路芯片生产线目前实际月产出达到23万片,在小于和等于6英寸的芯片制造产能中排在全球第二位。公司8英寸生产线于2017年投产,成为国内第一家拥有8英寸生产线的民营IDM产品公司,8英寸线月产能已达6万片。2023年底,公司12寸特色工艺晶圆生产线月产能已达6万片,先进化合物半导体制造生产线月产能已达14万片。公司的技术与产品涵盖了消费类产品的众多领域,在多个技术领域保持了国内领先的地位,如绿色电源芯片技术、MEMS传感器技术、LED照明和屏显技术、高压智能功率模块技术、第三代功率半导体器件技术、数字音视频技术等。同时利用公司在多个芯片设计领域的积累,为客户提供针对性的芯片产品系列和系统性的应用解决方案。

士兰微 SC32F5432介绍

SC32F5432(64)是专为电机控制器和数字电源开发的高性能mcu系列。它采用Cortex-MO内核,最大工作频率为72MHz, ADC采样率高达1Msps。一个协处理器单元可以满足多种乘法(包括乘法、加法、乘法和减法)、除法、移位、CRC等操作。

该系列支持单电源工作,集成高精度高速振荡器(RCH)和低速振荡器(RCL),支持多种低功耗模式。集成了多路增强型PWM、高精度高速ADC、多路模拟比较器和高速运算放大器,适用于各种电机和功率控制应用,最大限度地降低了系统成本。

士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

这款芯片不同于在学校中惯用的ST家的芯片,除了外设配置的代码写法不同外,也没有如STM32那般完善的标准库,所以有些功能需要通过查阅技术手册直接配置寄存器来实现。我这里开发的产品需要使用IIC通信,而芯片内部和外围电路并没有电平转换电路,而芯片官方代码中写的只有推挽输出和施密特输入,所以需要自己配置开漏输出和TTL输入(不懂其中区别的可以移步我这篇文章:开漏输出和推挽输出区别&TTL电平和CMOS电平的区别)。

开漏输出模式

 

TTL输入模式

SC32F5664芯片的SPI初始化需要进行以下步骤: 1. 设置SPI的时钟源和分频系数,可以选择内部时钟或者外部时钟,并根据需要设置分频系数,以满足所需的SPI时钟频率。 2. 配置SPI的工作模式,包括主从模式、CPOL和CPHA时钟极性和相位等。 3. 配置SPI的数据传输方向,包括MSB First(高位先传输)或LSB First(低位先传输)。 4. 配置SPI的数据位宽,通常为8位。 5. 配置SPI的帧格式,包括数据位宽、帧格式和帧格式控制。 6. 配置SPI的中断和DMA传输方式,以实现数据传输的自动化。 7. 使能SPI模块。 下面是一个SC32F5664芯片SPI初始化的例子: ```c SPI_InitTypeDef spi_init_struct; GPIO_InitTypeDef gpio_init_struct; //开启SPI时钟 CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, ENABLE); //配置GPIO为SPI功能引脚 GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //NSS GPIO_Init(GPIOB, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST); //SCK GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_IN_FL_NO_IT); //MISO GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);//MOSI //配置SPI参数 spi_init_struct.SPI_Mode = SPI_MODE_SLAVE; spi_init_struct.SPI_CPOL = SPI_CPOL_LOW; spi_init_struct.SPI_CPHA = SPI_CPHA_1EDGE; spi_init_struct.SPI_BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; spi_init_struct.SPI_FirstBit = SPI_FIRSTBIT_MSB; spi_init_struct.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &spi_init_struct); //使能SPI SPI_Cmd(SPI1, ENABLE); ``` 下面是一个SC32F5664芯片SPI传输数据的例子: ```c uint8_t send_data = 0x55; uint8_t recv_data; //等待空闲状态 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); //传输数据 SPI_I2S_SendData(SPI1, send_data); //等待数据接收完成 while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //接收数据 recv_data = SPI_I2S_ReceiveData(SPI1); ``` 上述例子中,首先使用SPI_InitTypeDef结构体初始化SPI模块。然后配置GPIO为SPI功能引脚,并设置SPI参数。最后传输数据时,先等待SPI传输缓冲区为空,然后使用SPI_I2S_SendData函数发送数据,并等待SPI接收缓冲区有数据,最后使用SPI_I2S_ReceiveData函数接收数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄奕子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值