add doc v1.1.2

This commit is contained in:
刘可亮
2025-01-23 16:37:00 +08:00
parent ba327e0931
commit b4033d8696
1883 changed files with 417094 additions and 0 deletions

View File

@@ -0,0 +1,232 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="I2C 包括以下配置内容: 内核配置 master 驱动使能 Device Drivers I2C support---&gt; &lt;*&gt; I2C support &lt;*&gt; I2C device interface I2C Hardware Bus support---&gt; &lt;*&gt; ArtInChip I2C support slave 驱动使能 Device Drivers I2C support---&gt; ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-07-08"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_configuration"/><meta name="DC.language" content="zh-CN"/><title>I2C 配置</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_config.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_config.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_configuration" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_config.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">I2C 配置</h1><div class="date inPage">8 Jul 2024</div><div style="color: gray;">
Read time: 2 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><div class="- topic/p p" data-ofbid="d243385e22__20250121171700">I2C 包括以下配置内容:<ol class="- topic/ol ol" id="i2c_configuration__ol_q5h_rtr_21c" data-ofbid="i2c_configuration__ol_q5h_rtr_21c"><li class="- topic/li li" data-ofbid="d243385e25__20250121171700">内核配置<ol class="- topic/ol ol" type="a" id="i2c_configuration__ol_gs2_str_21c" data-ofbid="i2c_configuration__ol_gs2_str_21c"><li class="- topic/li li" data-ofbid="d243385e28__20250121171700">master 驱动使能<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__pre_hkk_ptr_21c" data-ofbid="i2c_configuration__pre_hkk_ptr_21c">Device Drivers
I2C support---&gt;
&lt;*&gt; I2C support
&lt;*&gt; I2C device interface
I2C Hardware Bus support---&gt;
&lt;*&gt; ArtInChip I2C support
</pre></li><li class="- topic/li li" data-ofbid="d243385e32__20250121171700">slave 驱动使能<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__pre_jkk_ptr_21c" data-ofbid="i2c_configuration__pre_jkk_ptr_21c">Device Drivers
I2C support---&gt;
&lt;*&gt; I2C support
&lt;*&gt; I2C device interface
I2C Hardware Bus support---&gt;
&lt;*&gt; ArtInChip I2C support
&lt;*&gt; ArtInChip I2C as slave mode
&lt;*&gt; I2C slave support
&lt;*&gt; I2C eeprom slave driver
</pre><div class="- topic/note note note note_note" id="i2c_configuration__note_umd_ttr_21c" data-ofbid="i2c_configuration__note_umd_ttr_21c"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d243385e38__20250121171700">在将 I2C 作为 slave 时,需要一个 backend 程序,作为 slave 的功能逻辑实现。此处选择内核自带的
eeprom即 I2C 作为 slave 时,是当做一个 eeprom
的功能在使用。也可以根据实际情况自己实现相应的 backend 代码</p>
</div></li><li class="- topic/li li" data-ofbid="d243385e41__20250121171700">eeprom 驱动使能<p class="- topic/p p" data-ofbid="d243385e43__20250121171700">使用 I2C 接口与 eeprom 通信,是一种应用非常广泛的场景。此处介绍如何使能内核的 eeprom
驱动(需要先使能 I2C 的 master
驱动)。</p><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__pre_lkk_ptr_21c" data-ofbid="i2c_configuration__pre_lkk_ptr_21c">Device Drivers
Misc devices---&gt;
EEPROM support---&gt;
&lt;*&gt; I2C EEPROMs/RAMs/ROMs from most vendors
</pre></li></ol></li><li class="- topic/li li" data-ofbid="d243385e47__20250121171700">DTS 配置<ol class="- topic/ol ol" type="a" id="i2c_configuration__ol_p54_5tr_21c" data-ofbid="i2c_configuration__ol_p54_5tr_21c"><li class="- topic/li li" data-ofbid="d243385e50__20250121171700">I2C 公共参数配置,以 I2C0
为例<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__codeblock_dwc_vtr_21c" data-ofbid="i2c_configuration__codeblock_dwc_vtr_21c">i2c0: i2c@<span class="hl-number">19220000</span> {
compatible = <span class="hl-string">"artinchip,aic-i2c-v1.0"</span>;
reg = &lt;<span class="hl-number">0x0</span> <span class="hl-number">0x19220000</span> <span class="hl-number">0x0</span> <span class="hl-number">0x400</span>&gt;;
interrupts-extended = &lt;&amp;plic0 <span class="hl-number">84</span> IRQ_TYPE_LEVEL_HIGH&gt;;
clocks = &lt;&amp;cmu CLK_I2C0&gt;;
resets = &lt;&amp;rst RESET_I2C0&gt;;
#address-cells = &lt;<span class="hl-number">1</span>&gt;;
#size-cells = &lt;<span class="hl-number">0</span>&gt;;
};</pre></li><li class="- topic/li li" data-ofbid="d243385e54__20250121171700">I2C master 配置<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__codeblock_f32_wtr_21c" data-ofbid="i2c_configuration__codeblock_f32_wtr_21c">&amp;i2c0 {
pinctrl-names = <span class="hl-string">"default"</span>;
pinctrl-<span class="hl-number">0</span> = &lt;&amp;i2c0_pins_a&gt;;
status = <span class="hl-string">"okay"</span>;
eeprom@<span class="hl-number">50</span> {
compatible = <span class="hl-string">"atmel,24c64"</span>;
reg = &lt;<span class="hl-number">0x50</span>&gt;;
pagesize = &lt;<span class="hl-number">32</span>&gt;;
};
};</pre><div class="- topic/note note note note_note" id="i2c_configuration__note_lf4_wtr_21c" data-ofbid="i2c_configuration__note_lf4_wtr_21c"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d243385e60__20250121171700">该配置是将 eeprom 挂在 I2C0 总线上的配置reg 属性表示 slave 设备的地址pagesize 表示
eeprom 一页有 32byte。若在 I2C 总线上挂其它设备,对 DTS
进行相应修改即可。</p>
</div></li><li class="- topic/li li" data-ofbid="d243385e63__20250121171700">I2C slave
配置<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__codeblock_p4h_xtr_21c" data-ofbid="i2c_configuration__codeblock_p4h_xtr_21c">&amp;i2c0 {
pinctrl-names = <span class="hl-string">"default"</span>;
pinctrl-<span class="hl-number">0</span> = &lt;&amp;i2c0_pins_a&gt;;
status = <span class="hl-string">"okay"</span>;
slave@<span class="hl-number">54</span> {
compatible = <span class="hl-string">"slave-24c02"</span>;
reg = &lt;<span class="hl-number">0x40000054</span>&gt;;
};
};</pre><p class="- topic/p p" data-ofbid="d243385e67__20250121171700">内核的 I2C 子系统框架会通过查看 reg 属性的
bit30判断 I2C 是工作在主机模式还是从机模式。若 bit30 为
1则为从机模式。上述配置表示 I2C 工作在从机模式,设备地址为
0x54。</p><div class="- topic/p p" data-ofbid="d243385e69__20250121171700">若需要设置从机为 10bit 寻址,则需要设置 reg 属性的 bit31
为 1如下图所示配置从机地址为
0x139。<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_configuration__codeblock_qrv_xtr_21c" data-ofbid="i2c_configuration__codeblock_qrv_xtr_21c">&amp;i2c0 {
pinctrl-names = <span class="hl-string">"default"</span>;
pinctrl-<span class="hl-number">0</span> = &lt;&amp;i2c0_pins_a&gt;;
status = <span class="hl-string">"okay"</span>;
slave@<span class="hl-number">139</span> {
compatible = <span class="hl-string">"slave-24c02"</span>;
reg = &lt;<span class="hl-number">0xC0000139</span>&gt;;
};
};</pre></div></li></ol></li></ol></div></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,219 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="drv 层管理 I2C 控制器资源的顶层结构体 struct aic_i2c_bus { struct rt_i2c_bus_device bus; //RTT 内核 I2C 控制器数据结构 aic_i2c_ctrl aic_bus; //I2C 控制器资源的底层结构体 struct rt_completion cmd_complete; //完成量,用于指示一个 message 是否传输完成 ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.creator" content="yan.wang"/><meta name="DC.date.created" content="2024-01-23"/><meta name="DC.date.modified" content="2024-12-02"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_data_structure_design"/><meta name="DC.language" content="zh-CN"/><title>数据结构设计</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_data_struct.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_data_struct.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_data_structure_design" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_data_struct.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">数据结构设计</h1><div class="date inPage">2 Dec 2024</div><div style="color: gray;">
Read time: 2 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><ul class="- topic/ul ul" id="i2c_data_structure_design__ul_zzr_3hz_gdc" data-ofbid="i2c_data_structure_design__ul_zzr_3hz_gdc"><li class="- topic/li li" data-ofbid="d162638e24__20250121171617">
<div class="- topic/p p" data-ofbid="d162638e26__20250121171617">drv 层管理 I2C
控制器资源的顶层结构体<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_data_structure_design__codeblock_d5r_gg3_fdc" data-ofbid="i2c_data_structure_design__codeblock_d5r_gg3_fdc"><strong class="hl-keyword">struct</strong> aic_i2c_bus {
<strong class="hl-keyword">struct</strong> rt_i2c_bus_device bus; <em class="hl-comment">//RTT 内核 I2C 控制器数据结构</em>
aic_i2c_ctrl aic_bus; <em class="hl-comment">//I2C 控制器资源的底层结构体</em>
<strong class="hl-keyword">struct</strong> rt_completion cmd_complete; <em class="hl-comment">//完成量,用于指示一个 message 是否传输完成</em>
};</pre></div>
</li><li class="- topic/li li" data-ofbid="d162638e31__20250121171617">
<div class="- topic/p p" data-ofbid="d162638e33__20250121171617">RTT 内核 I2C
控制器数据结构<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_data_structure_design__codeblock_bs5_gg3_fdc" data-ofbid="i2c_data_structure_design__codeblock_bs5_gg3_fdc"><strong class="hl-keyword">struct</strong> rt_i2c_bus_device
{
<strong class="hl-keyword">struct</strong> rt_device parent; <em class="hl-comment">//设备基类 device</em>
<strong class="hl-keyword">const</strong> <strong class="hl-keyword">struct</strong> rt_i2c_bus_device_ops *ops; <em class="hl-comment">//I2C 操作方法</em>
rt_uint16_t flags; <em class="hl-comment">//I2C 读写标志</em>
<strong class="hl-keyword">struct</strong> rt_mutex lock; <em class="hl-comment">//互斥锁,保证多线程访问安全</em>
rt_uint32_t timeout; <em class="hl-comment">//超时时间</em>
rt_uint32_t retries; <em class="hl-comment">//调用次数</em>
<strong class="hl-keyword">void</strong> *priv; <em class="hl-comment">//私有数据</em>
};</pre></div>
</li><li class="- topic/li li" data-ofbid="d162638e38__20250121171617">
<div class="- topic/p p" data-ofbid="d162638e40__20250121171617">hal 层管理 I2C
控制器资源的底层结构体<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_data_structure_design__codeblock_scw_gg3_fdc" data-ofbid="i2c_data_structure_design__codeblock_scw_gg3_fdc"><strong class="hl-keyword">struct</strong> aic_i2c_ctrl
{
int32_t index;
<strong class="hl-keyword">char</strong> *device_name;
<strong class="hl-keyword">unsigned</strong> <strong class="hl-keyword">long</strong> reg_base;
uint32_t addr_bit;
uint32_t speed_mode;
uint32_t bus_mode;
<strong class="hl-keyword">struct</strong> aic_i2c_msg *msg; <em class="hl-comment">//指向当前传输的 message</em>
<strong class="hl-keyword">struct</strong> aic_i2c_slave_info slave; <em class="hl-comment">//从机信息数据结构</em>
<strong class="hl-keyword">enum</strong> aic_msg_status msg_status;
uint32_t slave_addr;
uint32_t abort_source;
uint32_t msg_err;
uint32_t buf_write_idx; <em class="hl-comment">//当前 message 为 write msg 时buf_write_idx 为写数据的计数。当前 message 为 read msg 时buf_write_idx 为写命令的计数(I2C 模块需要每次写 read 命令,才能读出数据)。</em>
uint32_t buf_read_idx; <em class="hl-comment">//读数据的计数</em>
bool is_first_message; <em class="hl-comment">//是否是最后一个 message</em>
bool is_last_message; <em class="hl-comment">//是否是第一个 message</em>
};</pre></div>
</li><li class="- topic/li li" data-ofbid="d162638e45__20250121171617">
<div class="- topic/p p" data-ofbid="d162638e47__20250121171617">I2C
消息数据结构原型<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_data_structure_design__codeblock_avx_gg3_fdc" data-ofbid="i2c_data_structure_design__codeblock_avx_gg3_fdc"><strong class="hl-keyword">struct</strong> aic_i2c_msg
{
uint16_t addr; <em class="hl-comment">// 从机地址</em>
uint16_t flags; <em class="hl-comment">// 读写标志</em>
uint16_t len; <em class="hl-comment">// 数据长度</em>
uint8_t *buf; <em class="hl-comment">// 待传输数据的指针</em>
};</pre></div>
</li><li class="- topic/li li" data-ofbid="d162638e52__20250121171617">
<div class="- topic/p p" data-ofbid="d162638e54__20250121171617">I2C
从机信息数据结构原型<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_data_structure_design__codeblock_m3z_gg3_fdc" data-ofbid="i2c_data_structure_design__codeblock_m3z_gg3_fdc"><strong class="hl-keyword">struct</strong> aic_i2c_slave_info
{
<strong class="hl-keyword">void</strong> *callback_param; <em class="hl-comment">//回调参数</em>
i2c_slave_cb_t slave_cb; <em class="hl-comment">//从机回调函数</em>
};</pre></div>
</li></ul></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,192 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="I2C 通信调试 在使能 C 的驱动后,可以通过 tools 中的 i2cdetect 工具,快速检测 C 通信功能是否正常。使能驱动后,会创建出相应的 C 适配器,但是 C 通信功能是否正常仍是不确定的,可通过如下命令进行测试: i2cdetect -y -r 0 此命令用来测试 C 总线 0 上的地址分布情况。如果通信正常,即使总线上没有挂接任何 C ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-12-02"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_debug_guide"/><meta name="DC.language" content="zh-CN"/><title>调试指南</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_debug.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_debug.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_debug_guide" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-12" id="wh_topic_body">
<button id="wh_close_topic_toc_button" class="close-toc-button d-none" aria-label="Toggle topic table of content" aria-controls="wh_topic_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_debug.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">调试指南</h1><div class="date inPage">2 Dec 2024</div><div style="color: gray;">
Read time: 1 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><section class="- topic/section section" id="i2c_debug_guide__section_jvt_15r_21c" data-ofbid="i2c_debug_guide__section_jvt_15r_21c"><h2 class="- topic/title title sectiontitle">I2C 通信调试</h2>
<p class="- topic/p p" data-ofbid="d179052e27__20250121171624">在使能 C 的驱动后,可以通过 tools 中的 i2cdetect 工具,快速检测 C 通信功能是否正常。使能驱动后,会创建出相应的 C 适配器,但是 C
通信功能是否正常仍是不确定的,可通过如下命令进行测试:</p>
<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_debug_guide__codeblock_kvt_15r_21c" data-ofbid="i2c_debug_guide__codeblock_kvt_15r_21c">i2cdetect -y -r <span class="hl-number">0</span></pre>
<p class="- topic/p p" data-ofbid="d179052e33__20250121171624">此命令用来测试 C 总线 0 上的地址分布情况。如果通信正常,即使总线上没有挂接任何 C 设备,那么也会立即返回结果。如果在该测试中返回 timeout那么需要先检查
C 的 SDA 和 SCL 是否有上拉(该问题一般是由于没有上拉导致)。如果有上拉,那么需要进一步进行调试。</p>
</section><section class="- topic/section section" id="i2c_debug_guide__section_lvt_15r_21c" data-ofbid="i2c_debug_guide__section_lvt_15r_21c"><h2 class="- topic/title title sectiontitle">调试开关</h2>
<div class="- topic/p p" data-ofbid="d179052e41__20250121171624">I2C 的驱动由一些 dbg 的调试信息,默认情况下是不会打印的,当需要进行跟踪调试时,可通过以下步骤打开这些调试信息。<ol class="- topic/ol ol" id="i2c_debug_guide__ol_hdx_b5r_21c" data-ofbid="i2c_debug_guide__ol_hdx_b5r_21c"><li class="- topic/li li" data-ofbid="d179052e44__20250121171624">调整 log 等级<p class="- topic/p p" data-ofbid="d179052e46__20250121171624">通过 menuconfig 调整内核的 log
等级</p><pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_debug_guide__codeblock_nvt_15r_21c" data-ofbid="i2c_debug_guide__codeblock_nvt_15r_21c">Kernel hacking---&gt;
printk and dmesg options---&gt;
(<span class="hl-number">8</span>) Default console loglevel (<span class="hl-number">1</span>-<span class="hl-number">15</span>)
</pre></li><li class="- topic/li li" data-ofbid="d179052e50__20250121171624">打开调试开关<pre class="+ topic/pre pr-d/codeblock pre codeblock language-c" id="i2c_debug_guide__codeblock_ovt_15r_21c" data-ofbid="i2c_debug_guide__codeblock_ovt_15r_21c">Kernel hacking---&gt;
ArtInChip Debug---&gt;
[*] I2C driver debug
</pre></li></ol></div>
</section></div></article></main></div>
</div>
<nav role="navigation" id="wh_topic_toc" aria-label="On this page" class="col-lg-2 d-none d-lg-block navbar d-print-none">
<div id="wh_topic_toc_content">
<div class=" wh_topic_toc "><div class="wh_topic_label">在本页上</div><ul><li class="section-item"><div class="section-title"><a href="#i2c_debug_guide__section_jvt_15r_21c" data-tocid="i2c_debug_guide__section_jvt_15r_21c">I2C 通信调试</a></div></li><li class="section-item"><div class="section-title"><a href="#i2c_debug_guide__section_lvt_15r_21c" data-tocid="i2c_debug_guide__section_lvt_15r_21c">调试开关</a></div></li></ul></div>
</div>
</nav>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,209 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="源代码位于: linux-5.10/drivers/i2c/busses/ I2C 的驱动文件如下: 文件 说明 i2c-artinchip.h aic I2C 公用头文件I2C 模块的寄存器定义,结构体定义等 i2c-artinchip-master.c I2C 作为 master 时的驱动文件 i2c-artinchip-slave.c I2C 作为 slave 时的驱动文件 ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-12-02"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_design_intro"/><meta name="DC.language" content="zh-CN"/><title>设计说明</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_design.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_design.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_design_intro" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_design.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">设计说明</h1><div class="date inPage">2 Dec 2024</div><div style="color: gray;">
Read time: 2 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><p class="- topic/p p" data-ofbid="d126682e22__20250121171601">源代码位于:<span class="+ topic/ph sw-d/filepath ph filepath">linux-5.10/drivers/i2c/busses/</span></p><p class="- topic/p p" data-ofbid="d126682e26__20250121171601"> I2C 的驱动文件如下:</p><div class="table-container"><table class="- topic/table table frame-all" id="i2c_design_intro__table_lnt_y5r_21c" data-ofbid="i2c_design_intro__table_lnt_y5r_21c" data-cols="2"><caption></caption><colgroup><col style="width:39.0625%"/><col style="width:60.9375%"/></colgroup><thead class="- topic/thead thead"><tr class="- topic/row"><th class="- topic/entry entry colsep-1 rowsep-1" id="i2c_design_intro__table_lnt_y5r_21c__entry__1">文件</th><th class="- topic/entry entry colsep-0 rowsep-1" id="i2c_design_intro__table_lnt_y5r_21c__entry__2">说明</th></tr></thead><tbody class="- topic/tbody tbody"><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_design_intro__table_lnt_y5r_21c__entry__1"><span class="+ topic/ph sw-d/filepath ph filepath">i2c-artinchip.h</span></td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_design_intro__table_lnt_y5r_21c__entry__2">aic I2C 公用头文件I2C 模块的寄存器定义,结构体定义等</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_design_intro__table_lnt_y5r_21c__entry__1"><span class="+ topic/ph sw-d/filepath ph filepath">i2c-artinchip-master.c</span></td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_design_intro__table_lnt_y5r_21c__entry__2">I2C 作为 master 时的驱动文件</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_design_intro__table_lnt_y5r_21c__entry__1"><span class="+ topic/ph sw-d/filepath ph filepath">i2c-artinchip-slave.c</span></td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_design_intro__table_lnt_y5r_21c__entry__2">I2C 作为 slave 时的驱动文件</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-0" headers="i2c_design_intro__table_lnt_y5r_21c__entry__1"><span class="+ topic/ph sw-d/filepath ph filepath">i2c-artinchip-common.c</span></td><td class="- topic/entry entry colsep-0 rowsep-0" headers="i2c_design_intro__table_lnt_y5r_21c__entry__2">I2C 一些公用寄存器读写函数的实现,以及 driver 的定义</td></tr></tbody></table></div><section class="- topic/section section" id="i2c_design_intro__section_mnt_y5r_21c" data-ofbid="i2c_design_intro__section_mnt_y5r_21c"><h2 class="- topic/title title sectiontitle">模块架构</h2>
<p class="- topic/p p" data-ofbid="d126682e68__20250121171601">linux 中 C 子系统的体系结构如下图所示</p>
<div class="- topic/p p" data-ofbid="d126682e71__20250121171601">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_design_intro__image_nnt_y5r_21c" src="../../../images/i2c/subsystem_arch.png" alt="subsystem_arch"/></div><br/>
</div>
<div class="- topic/p p" data-ofbid="d126682e78__20250121171601">在 C 子系统中SOC 厂商需要实现的就是 adapter 部分的驱动I2C adapter 是对 controller 的软件抽象。具体到上图,就是实现
adapter 的 algorithm 以及特定 SOC 的 I2C 代码部分。I2C 模块支持 master 和 slave 两种模式,所以 adapter
的驱动实现也就分为两部分I2C master 驱动和 slave 驱动。<ul class="- topic/ul ul" id="i2c_design_intro__ul_dwk_2vr_21c" data-ofbid="i2c_design_intro__ul_dwk_2vr_21c"><li class="- topic/li li" data-ofbid="d126682e81__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e83__20250121171601">I2C master</p>
<p class="- topic/p p" data-ofbid="d126682e86__20250121171601">I2C 作为 master 时,驱动的实现主要包括 4 个部分:</p>
<ol class="- topic/ol ol" id="i2c_design_intro__ol_pnt_y5r_21c" data-ofbid="i2c_design_intro__ol_pnt_y5r_21c"><li class="- topic/li li" data-ofbid="d126682e90__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e92__20250121171601">硬件参数配置:主要是设置 C 工作的主机模式7bit 或 10bit 寻址寻址的从机地址设置FIFO
设置以及总线传输速率等。</p>
</li><li class="- topic/li li" data-ofbid="d126682e95__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e97__20250121171601">SCL 时序参数设置:根据设置的总线传输速率,设置 SCL 的高低电平时间。</p>
</li><li class="- topic/li li" data-ofbid="d126682e100__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e102__20250121171601">i2c_algorithm 的实现:作为主机端,主要是 xfer 的实现。在驱动实现中,以 message
为单位进行数据的收发,数据的传输采用中断的方式。</p>
</li><li class="- topic/li li" data-ofbid="d126682e105__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e107__20250121171601">中断的处理:处理 master 端的数据收发,并产生相应的 start、ack、nack、restart、stop 信号。</p>
</li></ol>
</li><li class="- topic/li li" data-ofbid="d126682e111__20250121171601">I2C slave<p class="- topic/p p" data-ofbid="d126682e113__20250121171601">I2C 作为从机时,需要一个相应的后端软件(对 C 从设备的软件模拟),该后端软件与 adapter 驱动,组合成具有相应功能的
C 从设备。内核的 C 子系统框架中提供了一个 EEPROM 的软件后端,与 slave 驱动一起,可以作为一个具有 C 接口的 EEPROM
使用。</p><div class="- topic/p p" data-ofbid="d126682e115__20250121171601">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_design_intro__image_grg_kvr_21c" src="../../../images/i2c/twi_slave.png" width="384" alt="twi_slave"/></div><br/>
</div><p class="- topic/p p" data-ofbid="d126682e121__20250121171601">I2C 作为 slave 时,驱动的实现主要包括 3 个部分:</p><ol class="- topic/ol ol" id="i2c_design_intro__ol_hrg_kvr_21c" data-ofbid="i2c_design_intro__ol_hrg_kvr_21c"><li class="- topic/li li" data-ofbid="d126682e124__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e126__20250121171601">硬件参数配置:设置 C 工作的从模式FIFO 设置等。</p>
</li><li class="- topic/li li" data-ofbid="d126682e129__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e131__20250121171601">i2c_algorithm 的实现:作为从机端,主要是 slave 和 unreg_slave 的实现。reg_slave
用于将一个 client 注册到从模式的 i2c adapter 上unreg_slave 的功能与 slave
相反。</p>
</li><li class="- topic/li li" data-ofbid="d126682e134__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e136__20250121171601">中断的处理:处理 C 从机接收到的各种中断信号,并调用相应的回调函数进行数据的读写。</p>
</li></ol></li></ul></div>
<p class="- topic/p p" data-ofbid="d126682e140__20250121171601">综上I2C 模块的驱动实现,主要的工作有:</p>
<ul class="- topic/ul ul" id="i2c_design_intro__ul_d4q_kvr_21c" data-ofbid="i2c_design_intro__ul_d4q_kvr_21c"><li class="- topic/li li" data-ofbid="d126682e145__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e147__20250121171601">提供 C 控制器的 platform 驱动,初始化 C 适配器,判断 C 模块工作的主从模式,执行不同的初始化流程。</p>
</li><li class="- topic/li li" data-ofbid="d126682e150__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e152__20250121171601">I2C 模块作为主机时,提供 C 适配器的 algorithm并用具体适配器的 xfer 函数填充 i2c_algorithm 的 xfer 指针,并把
algorithm 指针赋值给 i2c_adapter 的 algo 指针。处理 master 端时序的设置以及 I2C
作为主机时的各种中断信号处理。</p>
</li><li class="- topic/li li" data-ofbid="d126682e155__20250121171601">
<p class="- topic/p p" data-ofbid="d126682e157__20250121171601">I2C 模块作为从机时,提供 C 适配器的 algorithm实现具体适配器的 slave 和 unreg_slave 函数,并把 algorithm
指针赋值给 i2c_adapter 的 algo 指针。处理 C 作为从机时的各种中断信号处理。</p>
</li></ul>
</section></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,161 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content=""/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="topic"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-10-30"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="id"/><meta name="DC.language" content="zh-CN"/><title>常见问题</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_faq.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_faq.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="id" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic topic" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_faq.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">常见问题</h1><div class="date inPage">30 Oct 2024</div><div style="color: gray;"></div><div class="- topic/body body"></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

View File

@@ -0,0 +1,161 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content=""/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="topic"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-10-30"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="id"/><meta name="DC.language" content="zh-CN"/><title>常见问题</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_faq.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_faq_2.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="id" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic topic" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_faq.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">常见问题</h1><div class="date inPage">30 Oct 2024</div><div style="color: gray;"></div><div class="- topic/body body"></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,198 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="初始化流程 I2C 模块驱动的初始化流程如下: 传输流程 在 master 驱动中,数据的传输由 xfer 发起,可以完成多个 msg 的传输。传输流程如下: I2C 模块总线信号 在 I2C 总线的数据传输过程,由 start/restart/stop 作为总线的控制信号。了解 I2C 模块中 start/restart/stop 信号的生成方式,有助于了解驱动的源码实现。 master ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.creator" content="yan.wang"/><meta name="DC.date.created" content="2024-01-23"/><meta name="DC.date.modified" content="2024-12-02"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_key_procedures"/><meta name="DC.language" content="zh-CN"/><title>关键流程设计</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_key_procedure.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_key_procedure.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_key_procedures" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-12" id="wh_topic_body">
<button id="wh_close_topic_toc_button" class="close-toc-button d-none" aria-label="Toggle topic table of content" aria-controls="wh_topic_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_key_procedure.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">关键流程设计</h1><div class="date inPage">2 Dec 2024</div><div style="color: gray;">
Read time: 1 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><section class="- topic/section section" id="i2c_key_procedures__section_unt_y5r_21c" data-ofbid="i2c_key_procedures__section_unt_y5r_21c"><h2 class="- topic/title title sectiontitle">初始化流程</h2><p class="- topic/p p" data-ofbid="d259694e26__20250121171720">I2C 模块驱动的初始化流程如下:</p><p class="- topic/p p" data-ofbid="d259694e28__20250121171720"></p><div class="- topic/p p" data-ofbid="d259694e29__20250121171720"><br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_key_procedures__image_rfy_y1l_g1c" src="../../../images/i2c/i2c_design_init_rtos.png" width="144" alt="i2c_design_init_rtos"/></div><br/></div></section><section class="- topic/section section" id="i2c_key_procedures__section_ul2_xvr_21c" data-ofbid="i2c_key_procedures__section_ul2_xvr_21c"><h2 class="- topic/title title sectiontitle">传输流程</h2><p class="- topic/p p" data-ofbid="d259694e36__20250121171720">在 master 驱动中,数据的传输由 xfer 发起,可以完成多个 msg 的传输。传输流程如下:</p><div class="- topic/p p" data-ofbid="d259694e38__20250121171720"><br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_key_procedures__image_xnt_y5r_21c" src="../../../images/i2c/i2c_design_xfer.png" width="192" alt="i2c_design_xfer"/></div><br/></div></section><section class="- topic/section section" id="i2c_key_procedures__section_ynt_y5r_21c" data-ofbid="i2c_key_procedures__section_ynt_y5r_21c"><h2 class="- topic/title title sectiontitle">I2C 模块总线信号</h2>
<div class="- topic/p p" data-ofbid="d259694e47__20250121171720">在 I2C 总线的数据传输过程,由 start/restart/stop 作为总线的控制信号。了解 I2C 模块中 start/restart/stop
信号的生成方式,有助于了解驱动的源码实现。<ul class="- topic/ul ul" id="i2c_key_procedures__ul_ab5_4vr_21c" data-ofbid="i2c_key_procedures__ul_ab5_4vr_21c"><li class="- topic/li li" data-ofbid="d259694e50__20250121171720">master transmitter<div class="- topic/p p" data-ofbid="d259694e52__20250121171720"><br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_key_procedures__image_a4t_y5r_21c" src="../../../images/i2c/i2c_master_transmitter.png" alt="master transmitter"/></div><br/></div><p class="- topic/p p" data-ofbid="d259694e56__20250121171720">对图中 3 个关键点的解释:</p><ol class="- topic/ol ol" id="i2c_key_procedures__ol_b4t_y5r_21c" data-ofbid="i2c_key_procedures__ol_b4t_y5r_21c"><li class="- topic/li li" data-ofbid="d259694e59__20250121171720">
<p class="- topic/p p" data-ofbid="d259694e61__20250121171720">I2C 作为 transmitter 时,当向 TXFIFO 中写入数据时I2C 模块会自动发出 start 信号</p>
</li><li class="- topic/li li" data-ofbid="d259694e64__20250121171720">
<p class="- topic/p p" data-ofbid="d259694e66__20250121171720">若 stop 位未置位,则当 TXFIFO 中的数据全部发送TXFIFO 为空时,会保持 SCL 为低电平,直到再次向
TXFIFO 中写入数据</p>
</li><li class="- topic/li li" data-ofbid="d259694e69__20250121171720">
<p class="- topic/p p" data-ofbid="d259694e71__20250121171720">再次向 TXFIFO 写入数据时,将 stop 位置 1则在完成该字节的发送后master 会自动发送 stop 信号</p>
</li></ol></li><li class="- topic/li li" data-ofbid="d259694e74__20250121171720">master receiver<div class="- topic/p p" data-ofbid="d259694e76__20250121171720"><br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_key_procedures__image_d4t_y5r_21c" src="../../../images/i2c/i2c_master_receiver.png" alt="master receiver"/></div><br/></div><p class="- topic/p p" data-ofbid="d259694e80__20250121171720">对图中 3 个关键点的解释:</p><ol class="- topic/ol ol" id="i2c_key_procedures__ol_e4t_y5r_21c" data-ofbid="i2c_key_procedures__ol_e4t_y5r_21c"><li class="- topic/li li" data-ofbid="d259694e83__20250121171720">
<p class="- topic/p p" data-ofbid="d259694e85__20250121171720">I2C 作为 receiver 时,当向 TXFIFO 写入读命令(即向 I2C_DATA_CMD 写入读命令) 时I2C
模块会自动发送 start 信号</p>
</li><li class="- topic/li li" data-ofbid="d259694e88__20250121171720">
<p class="- topic/p p" data-ofbid="d259694e90__20250121171720">当接收到 slave 端发送的数据后,只有再次发送一次读命令,才会对本次收到的数据恢复 ACK 确认信号</p>
</li><li class="- topic/li li" data-ofbid="d259694e93__20250121171720">
<p class="- topic/p p" data-ofbid="d259694e95__20250121171720">master 在接收到最后一个数据后,回复 NACKslave 端才会结束数据的传送。在发送最后一个读命令时,同时将 stop
位置位,则 master 在接收到 slave 发送的数据后I2C 模块会自动发送 NACK 信号</p>
</li></ol></li></ul></div>
<div class="- topic/note note note note_note" id="i2c_key_procedures__note_vyr_qvr_21c" data-ofbid="i2c_key_procedures__note_vyr_qvr_21c"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d259694e101__20250121171720">I2C 模块的数据传输,无论是 transmitter 还是 receiver都会用到 TXFIFOtransmitter 时用来发送数据receiver
时用来发送命令。所以,中断处理中,触发 TXFIFO_EMPTY 中断的,可能是 msg也可能是 write msg</p>
</div>
</section><section class="- topic/section section" id="i2c_key_procedures__section_c4t_y5r_21c" data-ofbid="i2c_key_procedures__section_c4t_y5r_21c"><h2 class="- topic/title title sectiontitle">中断流程</h2><div class="- topic/p p" data-ofbid="d259694e108__20250121171720"><br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_key_procedures__image_f4t_y5r_21c" src="../../../images/i2c/i2c_design_interrupt.png" width="384" alt="i2c_design_interrupt"/></div><br/></div></section></div></article></main></div>
</div>
<nav role="navigation" id="wh_topic_toc" aria-label="On this page" class="col-lg-2 d-none d-lg-block navbar d-print-none">
<div id="wh_topic_toc_content">
<div class=" wh_topic_toc "><div class="wh_topic_label">在本页上</div><ul><li class="section-item"><div class="section-title"><a href="#i2c_key_procedures__section_unt_y5r_21c" data-tocid="i2c_key_procedures__section_unt_y5r_21c">初始化流程</a></div></li><li class="section-item"><div class="section-title"><a href="#i2c_key_procedures__section_ul2_xvr_21c" data-tocid="i2c_key_procedures__section_ul2_xvr_21c">传输流程</a></div></li><li class="section-item"><div class="section-title"><a href="#i2c_key_procedures__section_ynt_y5r_21c" data-tocid="i2c_key_procedures__section_ynt_y5r_21c">I2C 模块总线信号</a></div></li><li class="section-item"><div class="section-title"><a href="#i2c_key_procedures__section_c4t_y5r_21c" data-tocid="i2c_key_procedures__section_c4t_y5r_21c">中断流程</a></div></li></ul></div>
</div>
</nav>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,221 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="测试环境 硬件 测试板:带有两个 C 接口的测试板 PC用于和测试板交互 串口线:连接测试板的调试串口 软件 PC 端串口终端软件 i2c-tools 第三方软件包 测试配置 将测试板的两个 C一个配置为 master一个配置为 slave。两个 C 接口对接。 编译第三方测试工具 tools利用 tools 提供的工具进行测试。 i2c-tools 测试: i2cdetect ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-12-02"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_test_guide"/><meta name="DC.language" content="zh-CN"/><title>测试指南</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_test.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_test.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_test_guide" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-12" id="wh_topic_body">
<button id="wh_close_topic_toc_button" class="close-toc-button d-none" aria-label="Toggle topic table of content" aria-controls="wh_topic_toc" aria-expanded="true">
<span class="close-toc-icon-container">
<span class="close-toc-icon"></span>
</span>
</button>
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_test.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">测试指南</h1><div class="date inPage">2 Dec 2024</div><div style="color: gray;">
Read time: 2 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><section class="- topic/section section" id="i2c_test_guide__section_dq5_ksn_4dc" data-ofbid="i2c_test_guide__section_dq5_ksn_4dc"><h2 class="- topic/title title sectiontitle">测试环境</h2>
<div class="- topic/p p" data-ofbid="d51230e27__20250121171518">
<ul class="- topic/ul ul" id="i2c_test_guide__ul_qhd_f5r_21c" data-ofbid="i2c_test_guide__ul_qhd_f5r_21c"><li class="- topic/li li" data-ofbid="d51230e30__20250121171518"><strong class="+ topic/ph hi-d/b ph b">硬件</strong><ul class="- topic/ul ul" id="i2c_test_guide__ul_e3z_d5r_21c" data-ofbid="i2c_test_guide__ul_e3z_d5r_21c"><li class="- topic/li li" data-ofbid="d51230e34__20250121171518">
<p class="- topic/p p" data-ofbid="d51230e36__20250121171518">测试板:带有两个 C 接口的测试板</p>
</li><li class="- topic/li li" data-ofbid="d51230e39__20250121171518">
<p class="- topic/p p" data-ofbid="d51230e41__20250121171518">PC用于和测试板交互</p>
</li><li class="- topic/li li" data-ofbid="d51230e44__20250121171518">
<p class="- topic/p p" data-ofbid="d51230e46__20250121171518">串口线:连接测试板的调试串口</p>
</li></ul></li><li class="- topic/li li" data-ofbid="d51230e49__20250121171518"><strong class="+ topic/ph hi-d/b ph b">软件</strong><ul class="- topic/ul ul" id="i2c_test_guide__ul_g3z_d5r_21c" data-ofbid="i2c_test_guide__ul_g3z_d5r_21c"><li class="- topic/li li" data-ofbid="d51230e53__20250121171518">
<p class="- topic/p p" data-ofbid="d51230e55__20250121171518">PC 端串口终端软件</p>
</li><li class="- topic/li li" data-ofbid="d51230e58__20250121171518">
<p class="- topic/p p" data-ofbid="d51230e60__20250121171518">i2c-tools 第三方软件包</p>
</li></ul></li></ul>
</div>
</section><section class="- topic/section section" id="i2c_test_guide__section_h3z_d5r_21c" data-ofbid="i2c_test_guide__section_h3z_d5r_21c"><h2 class="- topic/title title sectiontitle">测试配置</h2>
<p class="- topic/p p" data-ofbid="d51230e70__20250121171518">将测试板的两个 C一个配置为 master一个配置为 slave。两个 C 接口对接。 编译第三方测试工具 tools利用 tools 提供的工具进行测试。</p>
<div class="- topic/p p" data-ofbid="d51230e73__20250121171518">i2c-tools 测试:<ol class="- topic/ol ol" id="i2c_test_guide__ol_xgx_l5r_21c" data-ofbid="i2c_test_guide__ol_xgx_l5r_21c"><li class="- topic/li li" data-ofbid="d51230e76__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cdetect</strong><p class="- topic/p p" data-ofbid="d51230e79__20250121171518">i2cdetect 用于测试系统中有哪些 C 总线,以及 C
总线上有哪些地址被使用</p><p class="- topic/p p" data-ofbid="d51230e81__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cdetect -l</strong> :列出系统中所有的 C 总线</p><div class="- topic/p p" data-ofbid="d51230e85__20250121171518">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_test_guide__image_j3z_d5r_21c" src="../../../images/i2c/i2c_detect_1.png" alt="i2cdetect_1"/></div><br/>
</div><p class="- topic/p p" data-ofbid="d51230e91__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cdetect -y -r 0</strong> :查询 C-0 总线上哪些地址有挂接 I2C 设备。如下如所示0x51 地址上有挂接
C 设备</p><div class="- topic/p p" data-ofbid="d51230e95__20250121171518">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_test_guide__image_k3z_d5r_21c" src="../../../images/i2c/i2c_detect_2.png" alt="i2cdetect_2"/></div><br/>
</div></li><li class="- topic/li li" data-ofbid="d51230e101__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cset</strong><p class="- topic/p p" data-ofbid="d51230e104__20250121171518">i2cset 用于每次向 C 设备写一个字节的数据</p><p class="- topic/p p" data-ofbid="d51230e106__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cset -f -y 0 0x54 1
0x39</strong> I2C 从设备地址为 0x54将从设备中地址 1 处的数据设置为 0x39</p><div class="- topic/p p" data-ofbid="d51230e110__20250121171518">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_test_guide__image_m3z_d5r_21c" src="../../../images/i2c/i2c_set.png" alt="i2cset"/></div><br/>
</div></li><li class="- topic/li li" data-ofbid="d51230e116__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cget</strong><p class="- topic/p p" data-ofbid="d51230e119__20250121171518">i2cget 用于每次从 C 设备读取一个字节的数据</p><p class="- topic/p p" data-ofbid="d51230e121__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2cget -f -y 0 0x54
1</strong> I2C 从设备地址为 0x54读取从设备数据地址为 1 处的 1 字节数据</p><div class="- topic/p p" data-ofbid="d51230e125__20250121171518">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_test_guide__image_o3z_d5r_21c" src="../../../images/i2c/i2c_get.png" alt="i2cget"/></div><br/>
</div></li><li class="- topic/li li" data-ofbid="d51230e131__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2ctransfer</strong><p class="- topic/p p" data-ofbid="d51230e134__20250121171518">i2ctransfer 用于与 C
设备之间传输数据,每次可读写多个数据</p><p class="- topic/p p" data-ofbid="d51230e136__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2ctransfer -f -y 0 w17@0x54 0 0x5a-</strong>
I2C 设备地址为 0x54向从设备写入 16byte 数据0 为将要写入数据的起始地址,写入的数据为
0x5a0x590x58…</p><div class="- topic/p p" data-ofbid="d51230e140__20250121171518">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_test_guide__image_q3z_d5r_21c" src="../../../images/i2c/i2c_transfer_1.png" alt="i2ctransfer_1"/></div><br/>
</div><p class="- topic/p p" data-ofbid="d51230e146__20250121171518"><strong class="+ topic/ph hi-d/b ph b">i2ctransfer -f -y 0 w1@0x54 0 r16</strong> I2C 设备地址为 0x54从 C 设备读取
16byte 数据,读数据的起始地址为 0</p><div class="- topic/p p" data-ofbid="d51230e150__20250121171518">
<br/><div class="imagecenter"><img class="- topic/image image imagecenter" id="i2c_test_guide__image_r3z_d5r_21c" src="../../../images/i2c/i2c_transfer_2.png" alt="i2ctransfer_2"/></div><br/>
</div></li><li class="- topic/li li" data-ofbid="d51230e156__20250121171518"><strong class="+ topic/ph hi-d/b ph b">eeprog</strong><p class="- topic/p p" data-ofbid="d51230e159__20250121171518">eeprog 是读写 eeprom 的工具,每次读写的 message 只有一个字节。若要读写 8 个字节,则会分成 8
个 message 进行读写</p><p class="- topic/p p" data-ofbid="d51230e161__20250121171518"><strong class="+ topic/ph hi-d/b ph b">eeprog -f /dev/i2c-0 0x51 -r 0:8 -16</strong> I2C
设备地址为 0x51读取的数据起始地址是 0读取 8byte 数据,-16 表示 C 设备的数据地址需要 16bit
表示</p><p class="- topic/p p" data-ofbid="d51230e165__20250121171518"><strong class="+ topic/ph hi-d/b ph b">date | eeprog /dev/i2c-0 0x51 -w 0x200 -16</strong> :将 date
命令返回的数据写入到 eeprom 中,写入的起始地址是 0x200</p><div class="- topic/note note note note_note" id="i2c_test_guide__note_rnz_w5r_21c" data-ofbid="i2c_test_guide__note_rnz_w5r_21c"><span class="note__title">注:</span>
<p class="- topic/p p" data-ofbid="d51230e171__20250121171518">i2c-tools 默认是不支持 eeprog 的编译的,并且使用 eeprog 时需要确保被操作的 eeprom 没有通过 DTS
挂载到 I2C 总线,否则会一直返回该 eeprom 处于 busy 状态。</p>
</div></li></ol></div>
</section></div></article></main></div>
</div>
<nav role="navigation" id="wh_topic_toc" aria-label="On this page" class="col-lg-2 d-none d-lg-block navbar d-print-none">
<div id="wh_topic_toc_content">
<div class=" wh_topic_toc "><div class="wh_topic_label">在本页上</div><ul><li class="section-item"><div class="section-title"><a href="#i2c_test_guide__section_dq5_ksn_4dc" data-tocid="i2c_test_guide__section_dq5_ksn_4dc">测试环境</a></div></li><li class="section-item"><div class="section-title"><a href="#i2c_test_guide__section_h3z_d5r_21c" data-tocid="i2c_test_guide__section_h3z_d5r_21c">测试配置</a></div></li></ul></div>
</div>
</nav>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,191 @@
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn" data-whc_version="26.0">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="description" content="I2C 模块是一种用于连接 CPU 主机与 I 2 C 总线之间的接口,包括一根串行数据线 (SDA) 和一根串行时钟线 (SCL),分别用于传输数据和时钟信号,是实现 I2C 通信的基础。在 I 2 C 总线上,每个设备都有一个唯一的地址。当主设备 (master) 希望与从设备 (slave) 通信时,会通过发送从设备 (slave) ..."/><meta name="DC.rights.owner" content="(C) 版权 2025"/><meta name="copyright" content="(C) 版权 2025"/><meta name="generator" content="DITA-OT"/><meta name="DC.type" content="concept"/><meta name="DC.contributor" content="yan.wang"/><meta name="DC.date.modified" content="2024-12-02"/><meta name="DC.format" content="HTML5"/><meta name="DC.identifier" content="i2c_user_guide"/><meta name="DC.language" content="zh-CN"/><title>I2C 使用指南</title><!-- Build number 2023110923. --><meta name="wh-path2root" content="../../../"/><meta name="wh-toc-id" content=""/><meta name="wh-source-relpath" content="topics/sdk/i2c/i2c_user_guide.dita"/><meta name="wh-out-relpath" content="topics/sdk/i2c/i2c_user_guide.html"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/commons.css?buildId=2023110923"/>
<link rel="stylesheet" type="text/css" href="../../../webhelp/app/topic.css?buildId=2023110923"/>
<script src="../../../webhelp/app/options/properties.js?buildId=20250121171154"></script>
<script src="../../../webhelp/app/localization/strings.js?buildId=2023110923"></script>
<script src="../../../webhelp/app/search/index/keywords.js?buildId=20250121171154"></script>
<script defer="defer" src="../../../webhelp/app/commons.js?buildId=2023110923"></script>
<script defer="defer" src="../../../webhelp/app/topic.js?buildId=2023110923"></script>
<link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-styles-web.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/notes.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-common.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-images.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/footnote.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/aic-web-watermark.css?buildId=2023110923"/><link rel="stylesheet" type="text/css" href="../../../webhelp/template/topic-body-list.css?buildId=2023110923"/></head>
<body id="i2c_user_guide" class="wh_topic_page frmBody">
<a href="#wh_topic_body" class="sr-only sr-only-focusable">
跳转到主要内容
</a>
<header class="navbar navbar-default wh_header">
<div class="container-fluid">
<div class="wh_header_flex_container navbar-nav navbar-expand-md navbar-dark">
<div class="wh_logo_and_publication_title_container">
<div class="wh_logo_and_publication_title">
<a href="http://www.artinchip.com" class=" wh_logo d-none d-sm-block "><img src="../../../company-logo-white.png" alt="RTOS SDK 使用指南SDK 指南文件"/></a>
<div class=" wh_publication_title "><a href="../../../index.html"><span class="booktitle"><span class="ph mainbooktitle">RTOS SDK 使用指南</span><span class="ph booktitlealt">SDK 指南文件</span></span></a></div>
</div>
</div>
<div class="wh_top_menu_and_indexterms_link collapse navbar-collapse" id="wh_top_menu_and_indexterms_link">
</div>
</div>
</div>
</header>
<div class=" wh_search_input navbar-form wh_topic_page_search search " role="form">
<form id="searchForm" method="get" role="search" action="../../../search.html"><div><input type="search" placeholder="搜索 " class="wh_search_textfield" id="textToSearch" name="searchQuery" aria-label="搜索查询" required="required"/><button type="submit" class="wh_search_button" aria-label="搜索"><span class="search_input_text">搜索</span></button></div></form>
</div>
<div class="container-fluid" id="wh_topic_container">
<div class="row">
<nav class="wh_tools d-print-none navbar-expand-md" aria-label="Tools">
<div data-tooltip-position="bottom" class=" wh_breadcrumb "></div>
<div class="wh_right_tools">
<button class="wh_hide_highlight" aria-label="切换搜索突出显示" title="切换搜索突出显示"></button>
<button class="webhelp_expand_collapse_sections" data-next-state="collapsed" aria-label="折叠截面" title="折叠截面"></button>
<div class=" wh_print_link print d-none d-md-inline-block "><button onClick="window.print()" title="打印此页" aria-label="打印此页"></button></div>
</div>
</nav>
</div>
<div class="wh_content_area">
<div class="row">
<div class="col-12" id="wh_topic_body">
<div class=" wh_topic_content body "><main role="main"><article class="- topic/topic concept/concept topic concept" role="article" aria-labelledby="ariaid-title1"><span class="edit-link" style="font-size:12px; opacity:0.6; text-align:right; vertical-align:middle"><a target="_blank" href="http://172.16.35.88/tasks/jdssno1uvvbf2mltu9kb9v3if05d5gopuakboe8hlud18rma/edit/F:/aicdita/aicdita-cn/topics/sdk/i2c/i2c_user_guide.dita">Edit online</a></span><h1 class="- topic/title title topictitle1" id="ariaid-title1">I2C 使用指南</h1><div class="date inPage">2 Dec 2024</div><div style="color: gray;">
Read time: 1 minute(s)
</div><div class="- topic/body concept/conbody body conbody"><div class="- topic/p p" data-ofbid="d109602e22__20250121171547">
<div class="- topic/div div">
<p class="- topic/p p" data-ofbid="d109602e26__20250121171547">I2C 模块是一种用于连接 CPU 主机与 I<sup class="+ topic/ph hi-d/sup ph sup">2</sup>C 总线之间的接口,包括一根串行数据线 (SDA) 和一根串行时钟线
(SCL),分别用于传输数据和时钟信号,是实现 I2C 通信的基础。在 I<sup class="+ topic/ph hi-d/sup ph sup">2</sup>C 总线上,每个设备都有一个唯一的地址。当主设备 (master)
希望与从设备 (slave) 通信时,会通过发送从设备 (slave)
的地址来建立连接。这种寻址方式允许在同一总线上连接多个设备并进行精确的数据传输。主设备负责发起数据传输并生成时钟信号而被主设备寻址的设备则作为从设备进行响应。这种主从关系确保了通信的有序性和有效性。此外I2C
支持多种传输模式,以满足不同的应用需求。</p>
</div>
<div class="table-container"><table class="- topic/table table frame-all" id="i2c_user_guide__table_w3g_mtr_21c" data-ofbid="i2c_user_guide__table_w3g_mtr_21c" data-cols="3"><caption class="- topic/title title tablecap" data-caption-side="top" data-is-repeated="true"><span class="table--title-label"><span class="table--title-label-number"> 1</span><span class="table--title-label-punctuation">. </span></span><span class="table--title">术语定义</span></caption><colgroup><col style="width:28.732394366197184%"/><col style="width:28.169014084507044%"/><col style="width:43.098591549295776%"/></colgroup><thead class="- topic/thead thead"><tr class="- topic/row"><th class="- topic/entry entry colsep-1 rowsep-1" id="i2c_user_guide__table_w3g_mtr_21c__entry__1">术语</th><th class="- topic/entry entry colsep-1 rowsep-1" id="i2c_user_guide__table_w3g_mtr_21c__entry__2">定义</th><th class="- topic/entry entry colsep-0 rowsep-1" id="i2c_user_guide__table_w3g_mtr_21c__entry__3">注释说明</th></tr></thead><tbody class="- topic/tbody tbody"><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__1">SDA</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__2">I2C 数据线</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__3">-</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__1">SCL</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__2">I2C 时钟线</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__3">-</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__1">I2C algorithm</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__2">I2C 通信方法</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__3">提供产生 I2C 总线访问的通信函数</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__1">I2C adapter</td><td class="- topic/entry entry colsep-1 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__2">I2C 适配器</td><td class="- topic/entry entry colsep-0 rowsep-1" headers="i2c_user_guide__table_w3g_mtr_21c__entry__3">对 I2C 控制器的软件抽象</td></tr><tr class="- topic/row"><td class="- topic/entry entry colsep-1 rowsep-0" headers="i2c_user_guide__table_w3g_mtr_21c__entry__1">I2C client</td><td class="- topic/entry entry colsep-1 rowsep-0" headers="i2c_user_guide__table_w3g_mtr_21c__entry__2">I2C 用户端</td><td class="- topic/entry entry colsep-0 rowsep-0" headers="i2c_user_guide__table_w3g_mtr_21c__entry__3">一个 client 对应一个 I2C device</td></tr></tbody></table></div>
</div><section class="- topic/section section" id="i2c_user_guide__section_mb5_trn_4dc" data-ofbid="i2c_user_guide__section_mb5_trn_4dc"><h2 class="- topic/title title sectiontitle">模块特性</h2>
<div class="- topic/p p" data-ofbid="d109602e93__20250121171547">
<ul class="- topic/ul ul" id="i2c_user_guide__ul_rcv_ktr_21c" data-ofbid="i2c_user_guide__ul_rcv_ktr_21c"><li class="- topic/li li" data-ofbid="d109602e96__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e98__20250121171547">支持主和从模式</p>
</li><li class="- topic/li li" data-ofbid="d109602e101__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e103__20250121171547">支持最高 400Kb/s 传输</p>
</li><li class="- topic/li li" data-ofbid="d109602e106__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e108__20250121171547">支持 7 bits 和 10 bits 寻址</p>
</li><li class="- topic/li li" data-ofbid="d109602e111__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e113__20250121171547">支持时钟同步</p>
</li><li class="- topic/li li" data-ofbid="d109602e116__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e118__20250121171547">支持中断和轮询模式</p>
</li><li class="- topic/li li" data-ofbid="d109602e121__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e123__20250121171547">可编程 SDA 保持时间</p>
</li><li class="- topic/li li" data-ofbid="d109602e126__20250121171547">
<p class="- topic/p p" data-ofbid="d109602e128__20250121171547">可编程防止 I<sup class="+ topic/ph hi-d/sup ph sup">2</sup>C 通信异常总线挂死</p>
</li></ul>
</div>
</section></div></article></main></div>
</div>
</div>
</div>
</div>
<footer class="navbar navbar-default wh_footer">
<div class=" footer-container mx-auto ">
<title>footer def</title>
<style><!--
.p1 {
font-family: FangZhengShuSong, Times, serif;
}
.p2 {
font-family: Arial, Helvetica, sans-serif;
}
.p3 {
font-family: "Lucida Console", "Courier New", monospace;
}
--></style>
<div class="webhelp.fragment.footer">
<p class="p1">Copyright © 2019-2024 广东匠芯创科技有限公司. All rights reserved.</p>
</div><div>
<div class="generation_time">
Update Time: 2025-01-21
</div>
</div>
</div>
</footer>
<div id="go2top" class="d-print-none">
<span class="oxy-icon oxy-icon-up"></span>
</div>
<div id="modal_img_large" class="modal">
<span class="close oxy-icon oxy-icon-remove"></span>
<div id="modal_img_container"></div>
<div id="caption"></div>
</div>
<script src="${pd}/publishing/publishing-styles-AIC-template/js/custom.js" defer="defer"></script>
</body>
</html>

File diff suppressed because one or more lines are too long