目前很多单片机GPIO可以通过软件配置上拉电阻。 如上,左图为开漏输出(接上拉电阻),右图为推挽输出。 开漏输出的作用 防止短路: 在一些情况下(比如总线), 多个GPIO口可能会连接在同一根线上, 存在某个GPIO输出高电平, 另一个GPIO输出低电平的情况. 如果使用推挽输出, 你会发现这个GPIO的VCC和另一个GPIO的GND接...
双击打开mcu config,选择之前配置好的cube工程 导入芯片配置后,之前在cube里配置的模块就可以在simulink中使用了,如果没有配置的模块将会是灰色,无法选择 2.3应用层模块的搭建 2.3.1使用TIM1和GPIO实现1s闪灯 从simulink模块库中,托一个TIM模块到模型中,双击点开TIM模块进行配置。 APB为之前时钟树设置的频率,无法在...
51CTO博客已为您找到关于STM32CubeMX配置gpio模拟IIC的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及STM32CubeMX配置gpio模拟IIC问答内容。更多STM32CubeMX配置gpio模拟IIC相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
首先是配置I2C的GPIO,然后配置I2C参数。就是常规配置,按流程来写不会错。 /** * @brief EEPROM IIC 配置 */ void I2C_EE_config(void) { GPIO_InitTypeDef GPIO_InitStruct; I2C_InitTypeDef I2C_InitStruct; // 开启I2C GPIO时钟 EPROM_I2C_GPIO_APBxClkCmd(EEPROM_I2C_SCL_GPIO_CLK | EEPROM_I2C_SDA_...
讲解I2C协议之前,首先列出GPIO的输出模式配置图,输出模式有推挽输出、开漏输出。 推挽输出:可以输出高、低电平,连接数字器件。推挽结果一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通时令一个三极管截止。(特点:是可以真正的输出高电平和低电平,且两种电平下都有驱动能力)。
第一步:配置IIC外设,代替IIC_Init() 第二步:控制外设电路,实现指定地址写时序,替换Write_Reg() 第三步:控制外设电路,实现指定地址读时序,替换Read_Reg() RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);//时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); ...
然后配置一下GPIO也就你要用来IIC的端口一个是SLK,一个是SDA要用两个IO口。在右边芯片图上找到两个IO口,然后设置为GPIO_Output模式,然后你也可以像我一样加个标签(在User Label那里改)好记一点。 之后配置串口,如下图。 很重要的是配置时钟树,点开Clock Configuration,如下图配置,这个因芯片的不同而不同。
();// 配置GPIO引脚GPIO_Configuration();// 配置I2C外设I2C_Configuration();// 发送数据HAL_I2C_Master_Transmit(&hi2c1, DeviceAddress, sendData,sizeof(sendData), HAL_MAX_DELAY);// 延时等待数据发送完成HAL_Delay(1);// 根据实际情况调整延时时间// 接收数据HAL_I2C_Master_Receive(&hi2c1, Device...
所以总线一般会使用开漏输出。 回到开头的那个问题,目前很多开发板是可以通过软件给GPIO端口配置上拉电阻的,若一开始使用IIC协议并没有将总线设置为开漏输出,会导致数据读取失败,且会因为电路短路而导致开发板发热。所以为了避免类似情况出现,模拟IIC必须要将GPIO端口设置为开漏输出。
(1)你说的写1是向ODR写1,配置为上拉模式。我的意思是在什么模式下需要向端口写1,再读取GPIO的输入状态,才能读正确? (2)都是复用输出,我的意思是哪个正确? (3)浮空输入模式端口电压是个随机值,也不一定是高电平啊。开漏无外接上拉当然不会是高。 回复 使用道具 举报 ...