OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6829|回复: 4

f103c8t6 模拟i2c 电平无变化

[复制链接]

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2021-4-3
在线时间
41 小时
发表于 2021-5-8 17:56:27 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 kilomgcm 于 2021-5-8 18:26 编辑

求助高手:用的原子哥通用的模拟i2c程序驱动1602,但是sda口一直高电平5v(1602单独5v供电),SCL口一直1.5v,驱动失败。不知道是什么原因。

主程序
int main(void)
{
    delay_ms(500);
    RCC_Configuration(); //时钟设置

    IIC_Init();//IIC初始化AT24CXX_Init();                        //IIC初始化

    LCD1602_Init();
    while(1)
    {
                        
    ShowString(2, 2, "Hello World!"); //这里有个警告,好像是字符类型冲突,函数原型,void ShowString(unsigned char x, unsigned char  y,  unsigned char* str)
                        delay_ms(500);
        LED = 0;
        delay_ms(500);
        LED = 1; //                i++;
    }
}

//IO方向设置
#define SDA_IN()  {GPIOB->CRL&=0XFFFF0FFF;GPIOB->CRL|=0X00008000;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFF0FFF;GPIOB->CRL|=0X00003000;}
//IO操作函数         
#define IIC_SCL    PBout(4) //SCL
#define IIC_SDA    PBout(3) //SDA         
#define READ_SDA   PBin(3)  //输入SDA


void IIC_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOB时钟

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4|GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
    GPIO_SetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_4|GPIO_Pin_12);

keil仿真波形

仿真波形

仿真波形





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1999
金钱
1999
注册时间
2021-4-16
在线时间
510 小时
发表于 2021-5-9 11:40:04 | 显示全部楼层
用IIC一般有规定好时序的,看看资料里有没有介绍。
回复

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2021-4-3
在线时间
41 小时
 楼主| 发表于 2021-5-9 12:30:02 来自手机 | 显示全部楼层
疾如风 发表于 2021-5-9 11:40
用IIC一般有规定好时序的,看看资料里有没有介绍。

时序应该没错,我怀疑是硬件问题,因为之前成功过,后来又刷了几次就不显示了,用之前能显示的程序也不行。再买个最小系统板试试
回复

使用道具 举报

4

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2015-7-30
在线时间
60 小时
发表于 2021-5-9 14:11:43 | 显示全部楼层
可以检查一下,1602和单片机有没有共负极,驱动应该没有问题。
欢迎一起讨论,学习
回复

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2021-4-3
在线时间
41 小时
 楼主| 发表于 2021-5-9 21:28:03 | 显示全部楼层
孤独爱95 发表于 2021-5-9 14:11
可以检查一下,1602和单片机有没有共负极,驱动应该没有问题。

一个12v转5v的电源转接板,给系统和1602供电。之前有个代码驱动成功过,后来再也不行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 08:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表