[技术问答] M058S的IIC

[复制链接]
2038|19
 楼主| tongyajunlwj 发表于 2014-6-2 14:11 | 显示全部楼层 |阅读模式
有没有哪位大神知道新唐的M058S的第二个IIC通道如何打开
haolaishi 发表于 2014-6-2 15:35 | 显示全部楼层
和第一个I2C打开不一样?
 楼主| tongyajunlwj 发表于 2014-6-2 21:07 | 显示全部楼层
haolaishi 发表于 2014-6-2 15:35
和第一个I2C打开不一样?

您好,我用的是P34、P35的IIC接口读加速度传感器的数据,现在要用P44、P45口读,但读不出来数据,我是在程序里把I2C0换成I2C1了,,,但用不了,,不知道是不是还需要配置什么
haolaishi 发表于 2014-6-2 23:19 | 显示全部楼层
tongyajunlwj 发表于 2014-6-2 21:07
您好,我用的是P34、P35的IIC接口读加速度传感器的数据,现在要用P44、P45口读,但读不出来数据,我是在 ...

上初始化程序图
bkn1860 发表于 2014-6-3 09:11 | 显示全部楼层
tongyajunlwj 发表于 2014-6-2 21:07
您好,我用的是P34、P35的IIC接口读加速度传感器的数据,现在要用P44、P45口读,但读不出来数据,我是在 ...

I2C0换成I2C1的时候你看下寄存器的宏定义有没有?我用SPI1的时候发现我用的头文件里面SP1的寄存器没定义,自己加上就好了
gxliu08 发表于 2014-6-3 11:28 | 显示全部楼层
贴出初始化代码比较好看出问题
 楼主| tongyajunlwj 发表于 2014-6-3 18:10 | 显示全部楼层
haolaishi 发表于 2014-6-2 23:19
上初始化程序图

void I2C_Init(void)
{
        SYS->IPRSTC2 |= SYS_IPRSTC2_I2C1_RST_Msk; //C: Peripheral Reset Control Resister 2: I2C-bit = 1 => controller reset
        SYS->IPRSTC2 &= ~SYS_IPRSTC2_I2C1_RST_Msk;//C: Peripheral Reset Control Resister 2: I2C-bit = 0 => set controller to normal mode
        I2C1->I2CON |= I2C_I2CON_ENS1_Msk;
  I2C1->I2CLK = I2C_I2CLK_DIV4(120); /* 48000000Hz / 4 / 120 = 100000Hz */
        _I2C_ENABLE_TIMEOUT_COUNTER(I2C1);
}
 楼主| tongyajunlwj 发表于 2014-6-3 18:12 | 显示全部楼层
gxliu08 发表于 2014-6-3 11:28
贴出初始化代码比较好看出问题

void I2C_Init(void)
{
        SYS->IPRSTC2 |= SYS_IPRSTC2_I2C1_RST_Msk; //C: Peripheral Reset Control Resister 2: I2C-bit = 1 => controller reset
        SYS->IPRSTC2 &= ~SYS_IPRSTC2_I2C1_RST_Msk;//C: Peripheral Reset Control Resister 2: I2C-bit = 0 => set controller to normal mode
        I2C1->I2CON |= I2C_I2CON_ENS1_Msk;
  I2C1->I2CLK = I2C_I2CLK_DIV4(120); /* 48000000Hz / 4 / 120 = 100000Hz */
        _I2C_ENABLE_TIMEOUT_COUNTER(I2C1);
}

 楼主| tongyajunlwj 发表于 2014-6-3 18:13 | 显示全部楼层
bkn1860 发表于 2014-6-3 09:11
I2C0换成I2C1的时候你看下寄存器的宏定义有没有?我用SPI1的时候发现我用的头文件里面SP1的寄存器没定义 ...

有的,,我原来用的M051的头文件,然后在新唐官网上下的58S的库,但还是不行的。。
andila 发表于 2014-6-4 16:01 | 显示全部楼层
管脚功能是否有设置
gxliu08 发表于 2014-6-4 16:49 | 显示全部楼层
搞定了吗?
haolaishi 发表于 2014-6-5 08:18 | 显示全部楼层
tongyajunlwj 发表于 2014-6-3 18:10
void I2C_Init(void)
{
        SYS->IPRSTC2 |= SYS_IPRSTC2_I2C1_RST_Msk; //C: Peripheral Reset Control Res ...

这个看上去没问题,
haolaishi 发表于 2014-6-5 08:59 | 显示全部楼层
I2C2的时钟使能了没, 图像 283.png
 楼主| tongyajunlwj 发表于 2014-6-6 20:19 | 显示全部楼层
haolaishi 发表于 2014-6-5 08:59
I2C2的时钟使能了没,

程序里好像没有使能I2C1 这是在哪个寄存器里的啊?我用I2C0的时候也没有使能I2C0的时钟啊,,
 楼主| tongyajunlwj 发表于 2014-6-6 20:21 | 显示全部楼层
gxliu08 发表于 2014-6-4 16:49
搞定了吗?

还没有啊,,,I2C的初始化放在上面了,麻烦帮我看看有什么问题,,
haolaishi 发表于 2014-6-6 22:40 | 显示全部楼层
tongyajunlwj 发表于 2014-6-6 20:19
程序里好像没有使能I2C1 这是在哪个寄存器里的啊?我用I2C0的时候也没有使能I2C0的时钟啊,, ...

就我给你发的哪个寄存器,在时钟控制管理里面了
a_ziliu 发表于 2014-6-11 14:56 | 显示全部楼层
你有把io切成i2c嗎?
請參考附件
project path:
BSP_M058S_Series_CMSIS_EN_V1.00.002 i2c master\SampleCode\Driver\I2C_MASTER

BSP_M058S_Series_CMSIS_EN_V1.00.002 i2c master.zip

516.5 KB, 下载次数: 9

henryh52 发表于 2014-6-12 08:38 | 显示全部楼层
热心的高手很多啊,学习了。
 楼主| tongyajunlwj 发表于 2014-6-15 17:58 | 显示全部楼层
a_ziliu 发表于 2014-6-11 14:56
你有把io切成i2c嗎?
請參考附件
project path:

已解决了,,谢谢了
 楼主| tongyajunlwj 发表于 2014-6-15 17:58 | 显示全部楼层
a_ziliu 发表于 2014-6-11 14:56
你有把io切成i2c嗎?
請參考附件
project path:

已解决了,,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部