【中微】BAT32G133 下I²C通信
本文最后更新于34 天前,其中的信息可能已经过时,如有错误请发送邮件到tudougin@163.com

1. 串行接口IICA

1.1 串行接口IICA的功能

  1. I²C总线模式(支持多主控):

此模式通过串行时钟(SCLAn)和串行数据总线(SDAAn)的2条线,与多个设备进行8位数据传送。符合I 2C总线格式,主控设备能在串行数据总线上给从属设备生成“开始条件”、“地址”、“传送方向的指示”、“数据”和“停止条件”。从属设备通过硬件自动检测接收到的状态和数据。能通过此功能简化应用程序的I²C总线控制部分。

因为串行接口IICA的SCLAn引脚和SDAAn引脚用作漏极开路输出,所以串行时钟线和串行数据总线需要上拉电阻。

  1. 运行停止模式:是用于不进行串行传送时的模式,能降低功耗

2. I²C代码

2.1 I²C配置

初始化 IIC 通道。内容包括:时钟、地址位宽、使能模块、状态寄存器初始化等。

IICA0_Init();

这是通过宏控制初始化函数内部速率配置的开关:

  • IICA_STANDARD_MODE:标准模式,通信速率 ≤ 100kHz。
  • IICA_FAST_MODE:快速模式,通信速率 ≤ 400kHz。
//#define IICA_STANDARD_MODE
#define IICA_FAST_MODE

设定I²C端口引脚:

/* ToDo: You can allocate the SCLA0 to any desired pins with PxxCFG register */
#define SCLA0_PORT_SETTING() do{ \
    PORT->P36CFG = PTCFG_SCLA0;  /* 把 P36 映射为 SCL0 */ \
    PORT->PM3  &= ~(1 << 6);     /* 配置为输出方向(清除 P36 的输入使能) */ \
    PORT->PMC3 &= ~(1 << 6);     /* 配置为数字功能(不是模拟) */ \
}while(0)


/* ToDo: You can allocate the SDAA0 to any desired pins with PxxCFG register */
#define SDAA0_PORT_SETTING() do{ \
    PORT->P37CFG = PTCFG_SDAA0;  /* 把 P37 映射为 SDA0 */ \
    PORT->PM3  &= ~(1 << 7);     /* 配置为输入输出方向(I²C 双向) */ \
    PORT->PMC3 &= ~(1 << 7);     /* 配置为数字功能 */ \
}while(0)

2.2 主机模式下的I²C通信

#define SLVADDR                                 (0x98U)   /* the IIC Slave Address*/

uint8_t tx_buf[] = {0xAA,0x55,0xA5};
status = IICA0_MasterSend(SLVADDR, tx_buf, 3, 20);
uint8_t rx_buf[3] = {0};
status = IICA0_MasterReceive(SLVADDR, rx_buf, 3, 20);
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇