I2C总线规格说明书v2.1解析

需积分: 15 22 下载量 37 浏览量 更新于2024-07-14 收藏 662KB PDF 举报
"I2C Spec ver2.1.pdf" I2C(Inter-Integrated Circuit)总线是一种由Philips Semiconductors(现为NXP Semiconductors)开发的简单、双线式串行通信接口,适用于低速、短距离通信。这个规范的版本2.1是在2000年1月发布的,它提供了对I2C总线的详细定义,包括设计者和制造商所能获得的好处、总线概念、特性、数据传输方式以及扩展模式等。 1. 设计者和制造商的好处: - 设计者可以利用I2C的简单性和效率来创建更小、更经济的系统,因为I2C只需要两根线来实现通信,减少了硬件需求。 - 制造商可以通过I2C总线集成更多功能,提高产品的竞争力,同时减少布线和连接器的成本。 2. I2C总线概念: - I2C总线是一个主设备控制多个从设备的系统,主设备负责产生时钟信号和发起数据传输,而从设备响应主设备的请求。 3. 总体特性: - 数据传输速度可以是标准模式(100kbps)、快速模式(400kbps)或高速模式(3.4Mbps以上)。 - 数据传输基于起始条件(Start Condition)和停止条件(Stop Condition),用于标记传输的开始和结束。 - 每个字节包含8位数据,且传输过程中有应答(Acknowledge)机制,确保数据正确接收。 4. 位传输: - 数据有效性依赖于时钟同步,主设备提供时钟信号,从设备在规定时间内发送或接收数据。 - 起始条件和停止条件通过特定的电压变化来表示,起始条件是高电平到低电平的跳变,停止条件是数据线先变为高电平,然后时钟线变为高电平。 5. 数据传输: - 字节格式是8位,其中最高位是数据的奇偶校验位,最低位先被传输。 - 应答位是每个字节传输后的下一位,从设备通过拉低数据线来表示接收成功。 6. 冲突仲裁和时钟生成: - I2C总线支持多主设备环境,但只有一个主设备可以控制总线,仲裁机制确保了这一点。 - 时钟同步机制也用作一种握手信号,主设备停止发送时钟,等待从设备的应答。 7. 地址格式: - 7位地址模式中,第一字节的7位用于标识从设备地址,最高位用于区分读写操作。 - 特殊的通用呼叫地址(0x00)用于广播消息,让所有从设备都能接收到。 - CBUS兼容性是指I2C与某些其他总线系统(如CBUS)之间的兼容性。 8. 扩展模式: - 快速模式和高速模式是标准模式的扩展,提供更高的数据传输速率,满足更快的数据交换需求。 - 高速模式允许高达3.4Mbps的传输速度,适用于需要高速通信的应用。 总结来说,I2C Spec ver2.1详细阐述了I2C总线的各个方面,从基本原理到高级功能,为设计和实现基于I2C的电子系统提供了全面的指导。无论是在消费电子、嵌入式系统还是工业应用中,理解并掌握I2C协议都是至关重要的。

clear;clc parentdir = 'F:\data process\fMRI\fmrioutput'; % 定义储存各被试源文件的上级文件夹 cd(parentdir); % 进入这个上级文件夹 allsubjects = dir('sub*');%查找该文件夹下的所有被试 subinfos = numel(allsubjects); for i=1:numel(allsubjects) % 对每个被试进行循环 cursubject = allsubjects(i).name; % 找到当前被试的名字 matlabbatch=cell(1); curWPAT = fullfile(parentdir,cursubject,'WPAT'); curfucout=fullfile('F:\data process\fMRI\fmrioutput',cursubject,'WPAT') matlabbatch{1}.spm.stats.fmri_spec.dir = {curfucout}; matlabbatch{1}.spm.stats.fmri_spec.sess.scans = cellstr(spm_select('ExtFPList', curWPAT, '^sw*.nii', Inf)) matlabbatch{1}.spm.stats.fmri_spec.timing.units = 'scans'; matlabbatch{1}.spm.stats.fmri_spec.timing.RT = 2; matlabbatch{1}.spm.stats.fmri_spec.timing.fmri_t = 16; matlabbatch{1}.spm.stats.fmri_spec.timing.fmri_t0 = 8; %% matlabbatch{1}.spm.stats.fmri_spec.sess.cond = struct('name', {}, 'onset', {}, 'duration', {}, 'tmod', {}, 'pmod', {}, 'orth', {}); matlabbatch{1}.spm.stats.fmri_spec.sess.multi = {'D:\data process\fMRI\onsets\subject(i)_run1.mat'}; matlabbatch{1}.spm.stats.fmri_spec.sess.regress = struct('name', {}, 'val', {}); matlabbatch{1}.spm.stats.fmri_spec.sess.tempxx=dir(fullfile(curfucout,'rp*.txt')) matlabbatch{1}.spm.stats.fmri_spec.sess.hpf = 128; matlabbatch{1}.spm.stats.fmri_spec.fact = struct('name', {}, 'levels', {}); matlabbatch{1}.spm.stats.fmri_spec.bases.hrf.derivs = [0 0]; matlabbatch{1}.spm.stats.fmri_spec.volt = 1; matlabbatch{1}.spm.stats.fmri_spec.global = 'None'; matlabbatch{1}.spm.stats.fmri_spec.mthresh = 0.8; matlabbatch{1}.spm.stats.fmri_spec.mask = {''}; matlabbatch{1}.spm.stats.fmri_spec.cvi = 'AR(1)'; matlabbatch{2}.spm.stats.fmri_est.spmmat(1) = cfg_dep('fMRI model specification: SPM.mat File', substruct('.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','spmmat')); matlabbatch{2}.spm.stats.fmri_est.write_residuals = 0; matlabbatch{2}.spm.stats.fmri_est.method.Classical = 1; matlabbatch{3}.spm.stats.con.spmmat(1) = cfg_dep('Model estimation: SPM.mat File', substruct('.','val', '{}',{2}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','spmmat')); matlabbatch{3}.spm.stats.con.consess{1}.tcon.name = 'Old'; matlabbatch{3}.spm.stats.con.consess{1}.tcon.weights = 1; matlabbatch{3}.spm.stats.con.consess{1}.tcon.sessrep = 'none'; matlabbatch{3}.spm.stats.con.delete = 0; end;怎么改

2023-05-24 上传