泰凌微TLSR825X开发五 硬件IIC

前言

TLSR8258支持硬件I2C串行总线,可作为主模式(master)和从属模式(slave)
泰凌微I2C模块支持标准模式100kbps和快速模式400kbps,但必须保证系统时钟频率是通信速率的10倍以上

在这里插入图片描述

本章主要讲解下I2C主模式master下的使用,如有异议,欢迎留言指正

功能管脚
  • 复用引脚必须成对匹配
SDASCL
GPIO_PA3GPIO_PA4
GPIO_PB6GPIO_PD7
GPIO_PC0GPIO_PC1
GPIO_PC2GPIO_PC3
寄存器
  • I2CSP [0x00]:分频寄存器,仅master模式需要配置,时钟计算公式为
    • I2C clock = system clock / (4*divclock)
  • I2C_ID [0x01]:从设备地址寄存器,最低位为读写位
    在这里插入图片描述
  • I2CMST [0x02]:状态寄存器,获取当前是否忙与ACK接收状态
  • I2CSCT0 [0x03]:控制寄存器0,配置主从模式与slave读写内存地址映射
  • I2CAD [0x04]:master模式下的数据缓存,高8位
  • I2CDW [0x05]:master模式下的数据缓存,低8位
  • I2CDR [0x06]:读写数据寄存器
  • I2CSCT1 [0x07]:控制寄存器1,配置I2C发送数据的流程与使能ack读取
    • 如可以配置流程顺序为 start->0x01->0x04->0x05->0x06->stop
  • I2CMAP_HADR [0xe0]:映射模式下I2C从模式数据接收缓存地址读取
  • HOSR_ADR[0xe1~0xe3]:从模式下映射模式缓存地址,重定向到sram地址
  • I2CMAP_HOST [0xe4]:从模式下的中断状态,主机读写后触发,写1清除
配置流程

在这里插入图片描述

DMA模式
  • 仅slave支持DMA模式
代码实例

驱动代码可以参考i2c.c文件

接口API
  • i2c_master_init:初始化时钟与从机地址
  • i2c_write_byte:主机写一个字节数据到从机
  • i2c_read_byte:主机到从机读一个字节数据
  • i2c_write_series:主机写入一包数据到从机
  • i2c_read_series:主机到从机读取一包数据

例程代码参考app_i2c_master.c文件

  • 初始化i2c主机模式
void i2c_master_test_init(void)
{
    i2c_gpio_set(I2C_GPIO_GROUP_C0C1);   //管脚映射PC0 PC1
    i2c_master_init(0x5C, (unsigned char)(CLOCK_SYS_CLOCK_HZ/(4*200000)) );//从机地址0x5C(写) 0x5D(读),200K总线时钟
}
  • I2C master读写测试程序
unsigned char regAddr_WriteCMD = 0x01; //从机寄存器写地址
unsigned char regAddr_ReadCMD  = 0x11; //从机寄存器读地址

unsigned char i2c_master_tx_buff[2] = {0x11, 0x22};//写入数据缓存
unsigned char i2c_master_rx_buff[2];//读取数据缓存

void i2c_master_mainloop(void)
{   
	i2c_write_series(regAddr_WriteCMD, 1, (unsigned char *)i2c_master_tx_buff, sizeof(i2c_master_tx_buff));//往寄存器0x01写入两个字节
	i2c_read_series(regAddr_ReadCMD,  1, (unsigned char *)i2c_master_rx_buff, sizeof(i2c_master_rx_buff));//从寄存器0x11读取两个字节数据
}
问题勘误

由于设计上SPI模块和I2C模块在芯片内部共享了部分硬件资源,所以在软件上无法做到I2C和SPI从机模式同时使用

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值