合泰社区论坛

 找回密码
 立即注册-HOLTEK

QQ登录

只需一步,快速开始

搜索
查看: 1254|回复: 1

HT32F50230 硬件I2C 问题

[复制链接]

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-7-1 18:23:59 | 显示全部楼层 |阅读模式
合泰开发板
新手求助!!

为什么发送没输出,是哪里存在问题吗!!!
是按照例程弄得程序~
求大神纠正~

#define 7708_ADDR 0x42
#define REG_ADDR1 0x0A

#define I2C_PORT GPIO_PB
#define I2C_SCL  GPIO_PIN_7
#define I2C_SDA  GPIO_PIN_8

void IIC_Init(void)
{

        CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
        CKCUClock.Bit.I2C0 = 1;
        CKCUClock.Bit.AFIO = 1;
        CKCUClock.Bit.PA    =1;
        CKCU_PeripClockConfig(CKCUClock, ENABLE);

        GPIO_OpenDrainConfig(HT_GPIOB, I2C_SCL, ENABLE);
        GPIO_OpenDrainConfig(HT_GPIOB, I2C_SDA, ENABLE);
       
        /* Configure GPIO to I2C mode for Master                                                                  */
        AFIO_GPxConfig(I2C_PORT, I2C_SCL, AFIO_FUN_I2C);
        AFIO_GPxConfig(I2C_PORT, I2C_SDA, AFIO_FUN_I2C);

        /* I2C Master configuration                                                                             */

    /* !!! NOTICE !!!
       Notice that the local variable (structure) did not have an initial value.
       Please confirm that there are no missing members in the parameter settings below in this function.
    */
      I2C_InitTypeDef  I2C_InitStructure;
      I2C_DeInit(HT_I2C0);
      I2C_InitStructure.I2C_GeneralCall = I2C_GENERALCALL_ENABLE;
      I2C_InitStructure.I2C_AddressingMode = I2C_ADDRESSING_7BIT;
      I2C_InitStructure.I2C_Acknowledge = I2C_ACK_DISABLE;
      I2C_InitStructure.I2C_OwnAddress = 0x00;
      I2C_InitStructure.I2C_Speed = 1000000;
      I2C_InitStructure.I2C_SpeedOffset = 0;
      I2C_Init(HT_I2C0, &I2C_InitStructure);

        /* Enable I2C                                                                                             */
        I2C_Cmd(HT_I2C0, ENABLE);
               
}

//发送器件地址
void I2C_Ackpolling(void)
{
        while(I2C_GetFlagStatus(HT_I2C0, I2C_FLAG_BUSBUSY));
        I2C_TargetAddressConfig(HT_I2C0, 7708_ADDR, I2C_MASTER_WRITE);
        while(!I2C_GetFlagStatus(HT_I2C0, I2C_FLAG_ADRS));       
}

void I2C_Send(uint8_t reg_addr, uint8_t *data, uint8_t length)
{
        I2C_Ackpolling();
        while(!I2C_CheckStatus(HT_I2C0, I2C_MASTER_TX_EMPTY));
        I2C_SendData(HT_I2C0, reg_addr);
        while(0 != length)
        {
                while(I2C_CheckStatus(HT_I2C0, I2C_MASTER_TX_EMPTY));
                I2C_SendData(HT_I2C0, *data);
                length--;
        }
        I2C_GenerateSTOP(HT_I2C0);
}

uint8_t I2C_Recv(void)
{
        uint8_t data;
        I2C_TargetAddressConfig(HT_I2C0, 7708_ADDR, I2C_MASTER_READ);   
        while(!I2C_CheckStatus(HT_I2C0, I2C_MASTER_RECEIVER_MODE));
                                           
        while (!I2C_CheckStatus(HT_I2C0, I2C_MASTER_TX_EMPTY));
        I2C_SendData(HT_I2C0, REG_ADDR1);
       
        I2C_TargetAddressConfig(HT_I2C0, 7708_ADDR, I2C_MASTER_READ);   
        while(!I2C_CheckStatus(HT_I2C0, I2C_MASTER_RECEIVER_MODE));
       
        I2C_AckCmd(HT_I2C0, ENABLE);
    while(!I2C_CheckStatus(HT_I2C0, I2C_MASTER_RX_NOT_EMPTY));
       
        data = I2C_ReceiveData(HT_I2C0);
       
        return data;
}







上一篇:HOLTEK推出HT32F49365高性能Arm Cortex M4 32-bit单片机
下一篇:有单片机教程吗?
回复

使用道具 举报

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2024-4-2 21:13:13 | 显示全部楼层
合泰开发板
水一个帖,搜I2C来的,竟然没有一个人回复,合泰开发生态太不行了,办比赛卷大学生的钱。
回复

使用道具 举报

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

本版积分规则

公告:

Archiver|手机版|黑名单|合泰论坛 合泰在线业务 合泰在线技术

GMT+8, 2024-11-22 01:26 , Processed in 0.117944 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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