5738|3

149

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【HC32F460开发板测评】(第四篇)通信端口映射测评—I2C自由映射到GPIO端口 [复制链接]

  本帖最后由 梦溪开物 于 2021-5-10 20:03 编辑

一、引言

       评估产品简介上写道:所有串口通信(UART,I2C,SPI,CAN,I2S)端口可自由映射到64个GPIO,轻松应对PCB制板【1】,这句话具有一定吸引了,看了一些其它的资料,包括论坛上的一些帖子,很多中端的单片机也有重映射的功能【2】。这个特性的作用是广泛并且是显著的,尤其在一些需要人机交互应用中的PCB板的通信接口的布线上带来了极大的灵活性,这对于解决实际工程问题具有很大帮助。

 

 

二、测评内容

       本次测评的主要内容是:I2C自由映射到GPIO端口测评。主要测评步骤为:1、运行官方原有的IC例程,熟悉HC32F460单片机的I2C外设资源;2、在例程上进行修改,将原有定义的I2C引脚映射到功能组内的其它GPIO端口,展现测试结果,完成测评。

 

2.1 HC32F460的I2C外设资源

       HC32F460系列单片机具有3个独立的I2C外设模块,包括I2C1~I2C3,数据传输速度支持10Kbps~100Kbps,可以设定2个从机地址。I2C 模块的系统框图如图2.1所示,包含ACK 控制单元、仲裁单元、波特率控制单元、超时控制单元、中断控制单元、发送接收控制单元和仲裁单元,数据输出时,输出寄存器I2CDTR 通过移位寄存器I2CDSR 传送数据;数据输入时,输入寄存器I2CDRR 从移位寄存器I2CDSR 中得到输入数据【3】。I2C外设模块的硬件连接图如图2.2所示,由图中可以看到,本系列的I2C模块支持一主多从的模式。

                                                          图2.1 I2C系统框图

 

                                                    图2.2 I2C总线结构图

 

2.1 I2C自由映射GPIO端口测评

         I2C自由映射GPIO端口是有前提的,它只支持64个GPIO引脚,这64个GPIO引脚支持Func32~63功能选择,其中 Func32~63主要为串行通信功能(包含 USART,SPI,I2C,I2S,CAN),所以HC32F460系列单片机的I2C必须要在功能组内任意端口进行映射【4】。 Func32~63表如图2-3所示,另外,HC32F460系列单片机的数据手册的引脚功能表太长了,这里就不进行粘贴了。

                                                          图2.3 Func32~63表

 

       打开样例程序hc32f46x_ddl_Rev1.3.0,进入example文件夹,打开里面的i2c文件夹,使用IAR打开i2c_at24c02工程,本来里面是有5个工程的,但是除了i2c_at24c02的其它四个工程都是需要2个及2个以上的HC32F460开发板,所以选择在i2c_at24c02的基础上进行测评。i2c_at24c02工程下的主程序里包含了几个宏定义,用来定义HC32F460的I2C输出引脚(HC32F460引脚图如图2.4所示),包括组数位数,如下所示:

 

#define I2C1_SCL_PORT                   (PortC)
#define I2C1_SCL_PIN                    (Pin03)
#define I2C1_SDA_PORT                   (PortC)
#define I2C1_SDA_PIN                    (Pin04)

 

                                                            图2.4 HC32F460引脚图

 

       其中一个函数可以用来实现映射功能,该函数为:PORT_SetFunc(I2C1_SCL_PORT, I2C1_SCL_PIN, Func_I2c1_Scl, Disable),可以根据HC32F460系列单片机的数据手册的引脚功能表,改变I2C1_SCL_PORT、I2C1_SCL_PIN的宏定义来选择要映射到的GPIO端口。该函数的定义如下图所示:

 

en_result_t PORT_SetFunc(en_port_t enPort, uint16_t u16Pin, en_port_func_t enFuncSel,  
                  en_functional_state_t enSubFunc)
{
    stc_port_pfsr_field_t *PFSRx;
    uint8_t u8PinPos = 0u;

    /* parameter check */
    DDL_ASSERT(IS_VALID_PORT(enPort));
    DDL_ASSERT(IS_VALID_FUNC(enFuncSel));
    DDL_ASSERT(IS_FUNCTIONAL_STATE(enSubFunc));

    PORT_Unlock();

    for (u8PinPos = 0u; u8PinPos < 16u; u8PinPos ++)
    {
        if (u16Pin & (uint16_t)(1ul<<u8PinPos))
        {
            PFSRx = (stc_port_pfsr_field_t *)((uint32_t)(&M4_PORT->PFSRA0) \
                    + 0x40ul * enPort + 0x4ul * u8PinPos);

            /* main function setting */
            PFSRx->FSEL = enFuncSel;

            /* sub function enable setting */
            PFSRx->BFE = (Enable == enSubFunc ? Enable : Disable);
        }
    }

    PORT_Lock();
    return Ok;
}

       i2c_at24c02工程主函数的功能流程图如图2.5所示,通过I2C实现对EEPROM芯片AT24C02D的读写,并通过不同LED灯的状态来判断是否读写成功,其中AT24C02D在开发板中的位置如图2.6所示:

               如图2.5 i2c_at24c02工程功能流程图

 

                                              如图2.6 AT24C02位置图

 

       下载例程程序到开发板,运行程序,开发板的现象为:绿灯LED1闪烁,实物结果如附件1所示;将原SCL引脚改为PD1,将原SDA引脚改为PD2,编译、下载和运行程序后,开发板的现象为:红灯LED0闪烁,如附件2所示;用杜邦线将PC4(原SCK引脚)与PD1引脚相连,PC4(原SDA引脚)与PD2相连,编译、下载和运行程序后,开发板的现象为:绿灯LED1闪烁,如附件3所示。PC4和PC5是 AT24C02的通信引脚,如图2.7所示,更换单片机的通信引脚后,原来PCB上的AT24C02与HC32F460的通信线路就不管用了,需要用杜邦线等引线将AT24C02的通信引脚引出来。红灯LED0闪烁说明I2C通信不成功,绿灯闪烁证明映射的端口通信成功,实现了本次I2C自由映射GPIO端口的测评。

                                             如图2.7 AT24C02通信引脚图

 

 

三、测评心得

       本次测评验证了HC32F460具有和市面上的STM32单片机相似的功能——串口通信端口可以自由映射到GPIO口,在需要用到串口通信的应用中,用HC32F460系列单片机替换STM32的某些M4系列单片机未尝不失为一种选择,比较这具有成本上的优势。

       本次测评实现了将HC32F460单片机的I2C通信外设的输入输出自由映射到其它GPIO端口,其它通信外设的映射还没有尝试,至少I2C外设的映射是成功的。另外,以前没有接触更没有学会使用单片机的这个特性,所以学习起来比较有感触,重映射的功能在PCB布线上大有用处,虽然过孔和跳线可以解决很多问题,但是在PCB面积受限的时候该怎么办呢?或许重映射是一个不错的解决办法。

 

 

四、参考文献

【1】电子工程世界.华大M4内核单片机 HC32F460开发板[DB/OL].(2021)[2021-5-4].https://bbs.eeworld.com.cn/forum.php?mod=post&action=newthread&fid=265.

【2】电子工程世界,常见泽1.【AT-START-F403A测评】第5篇 F403A 复用和重映射[DB/OL].(2021)[2021-5-4].https://bbs.eeworld.com.cn/thread-1145885-1-1.html.

【3】华大半导体有限公司.HC32F460系列的集成电路总线I2C Rev1.1.pdf[DB/OL].(2021)[2021-5-4].https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/48/key/1.

【4】华大半导体有限公司.HC32F460系列数据手册Rev1.21.pdf[DB/OL].(2020)[2021-5-2].https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0.

 

2.1.gif (2.19 MB, 下载次数: 0)

附件1

附件1

2.2.gif (2.52 MB, 下载次数: 0)

附件2

附件2

2.3.gif (2.77 MB, 下载次数: 0)

附件3

附件3

最新回复

哪里可以买到啊  详情 回复 发表于 2021-5-19 17:12
点赞 关注
 
 

回复
举报

1668

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

HC32F460系列单片机替换STM32的某些M4系列单片机确实具有成本上的优势。

参考文献都这么多,楼主的测评是真下功夫了

 
 
 

回复

7452

帖子

18

TA的资源

五彩晶圆(高级)

板凳
 

很详细!辛苦分享

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

4
 
哪里可以买到啊
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表