组件应用程序错误该内存不能为read

应用程序错误该内存不能为read  时间:2021-01-19  阅读:()

PSoCCreator组件数据手册CypressSemiconductorCorporation198ChampionCourtSanJose,CA95134-1709408-943-2600文档编号:001-68651修订版**修订日期2011年3月31日特点行业标准PhilipsI2C总线接口仿真通用I2CEEPROM接口只需两个引脚(SDA和SCL)来连接I2C总线100/400/1000kbps标准数据速率高级API只需少量用户编程支持使用独立存储器缓冲区对一个或两个地址进行解码存储器缓冲区提供可配置的读/写和只读区域一般说明EZI2CSlave组件实现基于I2C寄存器的从器件.
I2C总线是Philips开发的基于行业标准的两线硬件接口.
主控在I2C总线上启动所有通信,并为所有从器件提供时钟.
EZI2CSlave支持高达1000kbps的标准数据速率,且与同一总线上的多个器件兼容.
EZI2CSlave是I2C从器件的唯一实现,主控和从器件之间的所有通信都在ISR(中断服务子程序)中处理,不需要与主程序流交互.
该接口显示为主控与从器件之间的共享存储器.
一旦执行了EZI2C_Start()函数,则几乎不再需要与API交互.
何时使用EZI2CSlave此组件最适合在I2C从器件与I2C主控之间需要共享存储器模型时使用.
EZI2CSlave缓冲区可以定义为用户代码中的任何变量、数组或结构,无需考虑I2C协议.
I2C主控可以查看此缓冲区中的任何变量,修改EZI2C_SetBuffer1()或EZI2C_SetBuffer2()函数定义的变量.
输入/输出连接本节介绍EZI2CSlave的各种输入和输出连接.
sda–输入/输出串行数据(SDA)是I2C数据信号.
它是用于传输或接收所有总线数据的双向数据信号.
EZI2CSlave1.
60EZI2CSlavePSoCCreator组件数据手册第2页,共18页文档编号:001-68651修订版**scl–输入/输出串行时钟(SCL)是主控生成的I2C时钟.
虽然从器件从不生成时钟信号,但是它可以将其保持在低电平,使总线停顿,直到它准备发送数据或NAK/ACK最新数据或地址为止.
示意宏信息组件目录中的默认EZI2CSlave是使用具有默认设置的EZI2CSlave组件的示意宏.
EZI2CSlave组件连接到引脚组件,该组件配置为SIO对.
参数和设置将EZI2C组件拖动到您的设计中,双击它可打开"配置"对话框.
EZI2C组件提供下列参数.
PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第3页,共18页数据速率此参数用于设置高达1000kbps的I2C数据速率值;实际速率可能因可用时钟速度和分频器范围而异.
标准数据速率为50、100(默认值)、400和1000kbps.
此选项确定是识别1个(默认值)还是2个独立I2C从器件地址.
如果识别两个地址,则将在软件(而不是硬件)中执行地址检测,因此从睡眠模式使能唤醒选项不可用,变为无效.
主要从器件地址这是主要I2C从器件地址(默认值为4).
可以用十进制或十六进制格式输入该值.
对于十六进制,应当在数字之前键入"0x".
此地址是7位右对齐从器件地址,不包括读/写位.
辅助从器件地址这是辅助I2C从器件地址(默认值为5).
可以用十进制和十六进制格式输入该值.
对于十六进制,应当在数字之前键入"0x".
只有当地址数参数设置为2时,此辅助地址才有效.
主要地址和辅助从器件地址必须不同.
此地址是7位右对齐从器件地址,不包括读/写位.
辅助地址大小此选项确定可以访问的数据范围.
可以选择8位(默认值)或16位辅助地址.
如果使用8位地址大小,则主控只能访问0到254之间的数据偏移.
您还可以选择16位辅助地址大小.
这将允许I2C主控在每个从器件地址访问最大达65,534字节的数据数组.
引脚连接此参数确定要用于SDA和SCL信号连接的引脚类型.
有三个可能值:任意、I2C0和I2C1.
默认值为"任意".
"任意"表示一般用途I/O(GPIO).
如果不需要从睡眠模式使能唤醒,则"任意"应当用于SDA和SCL.
如果需要从睡眠模式使能唤醒,则必须使用"I2C0"或"I2C1",它们允许您将器件配置为在I2C地址匹配时唤醒.
从睡眠模式使能唤醒此参数允许当从器件地址匹配时从睡眠模式唤醒器件.
默认情况下,禁用此选项.
只有当选择单一I2C地址且SDA和SCL信号连接到SIO端口(I2C0或I2C1)时,地址匹配时唤醒选项才有效.
时钟选择时钟绑定到系统总线时钟,用户不能更改.
EZI2CSlavePSoCCreator组件数据手册第4页,共18页文档编号:001-68651修订版**资源对此组件使用了固定函数I2C时钟.
模式数字模块API内存(字节)引脚数据路径宏单元状态寄存器控制寄存器计数器7闪存RAM单地址解码(默认值)不适用不适用不适用不适用不适用895182双地址解码(16位辅助地址大小)不适用不适用不适用不适用不适用1620372应用程序编程接口应用程序编程接口(API)子程序使您可以使用软件来配置组件.
下表列出并描述了每个函数的接口.
后面的章节将更详细地介绍每个函数.
默认情况下,PSoCCreator将实例名称"EZI2C_1"分配给提供的设计中的第一个组件实例.
您可以将其重命名为遵循标识符语法规则的任何唯一值.
该实例名称成为每个全局函数名称、变量和常量符号的前缀.
为增加可读性,下表中使用了实例名称"EZI2C".
函数说明voidEZI2C_Start(void)启动对I2voidEZI2C_Stop(void)C流量的响应.
(使能中断)停止对I2voidEZI2C_EnableInt(void)C流量的响应(禁用中断)使能中断,这是大多数I2voidEZI2C_DisableInt(void)C操作所必需的.
禁用中断.
EZI2C_Stop()API自动执行此操作.
voidEZI2C_SetAddress1(uint8addr)设置主要I2uint8EZI2C_GetAddress1(void)C地址.
返回主要I2voidEZI2C_SetBuffer1(uint16bufSize,uint16rwBoundry,void*dataPtr);C地址.
设置主要I2uint8EZI2C_GetActivity(void)C的缓冲区指针.
检查组件活动状态.
voidEZI2C_Sleep(void)停止I2C操作,保存I2voidEZI2C_Wakeup(void)C配置(禁用中断).
恢复I2C配置并启动I2voidEZI2C_Init(void)C操作.
(使能中断)使用自定义程序提供的初始值初始化I2C寄存器.
PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第5页,共18页函数说明voidEZI2C_Enable(void)激活硬件,开始组件操作.
voidEZI2C_SaveConfig(void)保存EZI2C组件的当前用户配置.
voidEZI2C_RestoreConfig(void)恢复非保留I2可选辅助地址APIC寄存器.
只有当使能两个I2C地址时,才提供下列这些命令.
函数说明voidEZI2C_SetAddress2(uint8addr)设置辅助I2uint8EZI2C_GetAddress2(void)C地址.
返回辅助I2voidEZI2C_SetBuffer2(uint16bufSize,uint16rwBoundry,void*dataPtr);C地址.
设置辅助I2可选睡眠/唤醒模式C的缓冲区指针.
只有当使用单一地址、SCL和SDA信号路由到SIO引脚且选择从睡眠模式使能唤醒时,下列这些函数才可用.
函数说明voidEZI2C_SlaveSetSleepMode(void)使能EZI2C睡眠地址解码并保存I2voidEZI2C_SlaveSetWakeMode(void)C配置.
禁用中断.
禁用EZI2C睡眠地址解码,恢复I2C配置,并启动I2全局变量C操作.
使能中断.
正常操作时不需要了解这些变量.
函数说明EZI2C_initVar指示是否已初始化EZI2C.
该变量初始化为0并在第一次调用EZI2C_Start()时设置为1.
这允许第一次调用EZI2C_Start()子程序后组件无需重新初始化便可重新启动.
如果需要重新初始化组件,该变量应当在调用EZI2C_Start()子程序之前设置为0.
另外,可以通过调用EZI2C_Init()和EZI2C_Enable()函数来重新初始化EZI2C.
EZI2C_dataPtrS1存储公开给第一个从器件地址的I2EZI2C_rwOffsetS1C主控的数据指针.
存储读写操作的偏移,在第一个从器件地址的每个写入序列进行设置.
EZI2C_rwIndexS1存储要为第一个从器件地址读取或写入的下一个值的指针.
EZI2CSlavePSoCCreator组件数据手册第6页,共18页文档编号:001-68651修订版**函数说明EZI2C_wrProtectS1存储第一个从器件地址的只读数据的偏移.
EZI2C_bufSizeS1存储公开给第一个从器件地址的I2EZI2C_dataPtrS2C主控的数据数组的大小.
存储公开给第二个从器件地址的I2EZI2C_rwOffsetS2C主控的数据指针.
存储读写操作的偏移,在第二个从器件地址的每个写入序列进行设置.
EZI2C_rwIndexS2存储要为第二个从器件地址读取或写入的下一个值的指针.
EZI2C_wrProtectS2存储第二个从器件地址的只读数据的偏移.
EZI2C_bufSizeS2存储公开给第二个从器件地址的I2EZI2C_curStateC主控的数据数组的大小.
存储I2EZI2C_curStatusC状态机的当前状态.
存储组件的当前状态.
voidEZI2C_Start(void)说明:这是开始组件操作的首先方法.
EZI2C_Start()设置initVar变量,调用EZI2C_Init()函数,然后调用EZI2C_Enable()函数.
它必须在I2此API不使能IC总线操作之前执行.
2C中断;但是大多数I2参数:C操作需要中断.
无返回值:无副作用:无voidEZI2C_Stop(void)说明:禁用I2C硬件并禁用I2参数:C中断.
根据需要,禁用活动模式电源模板位或时钟关断.
无返回值:无副作用:无voidEZI2C_EnableInt(void)说明:使能I2参数:C中断.
大多数操作需要中断.
应当在EZI2C_Start()API之后调用.
无返回值:无副作用:无PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第7页,共18页voidEZI2C_DisableInt(void)说明:禁用I2参数:C中断.
通常不需要此函数,因为Stop函数禁用中断.
无返回值:无副作用:如果在I2C仍运行时禁用I2C中断,则可能导致I2C总线锁定.
voidEZI2C_SetAddress1(uint8address)说明:此函数设置主要存储器缓冲区的I2参数:C地址.
此值可以为0到127之间的任何值.
地址s:0到127之间的7位从器件地址.
此地址右对齐,不包括读/写位.
返回值:无副作用:无uint8EZI2C_GetAddress1(void)说明:返回主要存储器缓冲区的I2参数:C从器件地址.
无返回值:通过SetAddress1或默认I2C地址设置的同一I2副作用:C从器件地址.
无voidEZI2C_SetBuffer1(uint16bufSize,uint16rwBoundry,void*dataPtr)说明:此函数设置从器件数据的缓冲区指针、大小和读写区域.
这是公开给I2参数:C主控的数据.
bufSize:缓冲区的大小(以字节为单位).
rwBoundry:设置在缓冲区开头可写入的字节数.
此值必须小于或等于缓冲区大小.
位于偏移rwBoundry和更远位置处的数据是只读的.
dataPtr:数据缓冲区的指针.
返回值:无副作用:无EZI2CSlavePSoCCreator组件数据手册第8页,共18页文档编号:001-68651修订版**uint8EZI2C_GetActivity(void)说明:如果自从上次调用此函数后发生I2当读取时读写忙标志会清除,但是"BUSY"标志只由IC读取或写入循环,则此函数返回非零值.
在此函数调用的结尾,活动标志复位为零.
2参数:CStop清除.
如果检测到活动,则返回非零值.
返回值:I2C活动的状态.
常量说明EZI2C_STATUS_READ1设置是否针对第一个地址检测读取序列.
当读取状态时清除.
EZI2C_STATUS_WRITE1设置是否针对第一个地址检测写入序列.
当读取状态时清除.
EZI2C_STATUS_READ2设置是否针对第二个地址检测读取序列(如果使能).
当读取状态时清除.
EZI2C_STATUS_WRITE2设置是否针对第二个地址检测写入序列(如果使能).
当读取状态时清除.
EZI2C_STATUS_BUSY如果检测到启动,则检测到停止时清除.
EZI2C_STATUS_ERR当检测到I2C硬件错误时设置,当读取状态时清除.
副作用:无voidEZI2C_SetAddress2(uint8address)说明:设置辅助存储器缓冲区的I2C从器件地址.
此值可以为0到127之间的任何值.
只有当在用户参数中选择了两个I2参数:C地址时,才提供此函数.
地址:0到127之间的7位从器件地址.
此地址右对齐,不包括读/写位.
返回值:无副作用:无uint8EZI2C_GetAddress2(void)说明:返回辅助存储器缓冲区的I2C从器件地址.
只有当在用户参数中选择了两个I2参数:C地址时,才提供此函数.
无返回值:通过SetAddress2或默认I2C地址设置的同一I2副作用:C从器件地址.
无PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第9页,共18页voidEZI2C_SetBuffer2(uint16bufSize,uint16rwBoundry,void*dataPtr)说明:此函数设置辅助从器件数据的缓冲区指针、大小和读写区域.
这是公开给辅助I2C地址的I2C主控的数据.
只有当在用户参数中选择了两个I2参数:C地址时,才提供此函数.
bufSize:公开给I2rwBoundry:设置IC主控的缓冲区的大小.
2此值必须小于或等于缓冲区大小.
位于偏移rwBoundry和更远位置处的数据是只读的.
C主控可读写的字节数.
dataPtr:这是用于I2返回值:C数据缓冲区的数据数组或结构的指针.
无副作用:无voidEZI2C_SlaveSetSleepMode(void)说明:这是选择从睡眠模式使能唤醒的情况下准备组件睡眠的首选API.
此API使能I2C睡眠地址解码.
它将一直等待,直到所有I2C流量在完成前停止.
将NAK所有后续I2参数:C流量,直到器件进入睡眠为止.
无返回值:无副作用:如果使能"从睡眠模式唤醒"选项,将禁用I2C中断(仅用于PSoC3ES3).
voidEZI2C_SlaveSetWakeMode(void)说明:这是将组件恢复为调用EZI2C_SlaveSetSleepMode()时的状态的首先API.
它禁用睡眠EZI2C从器件,并重新使能运行时EZI2C.
应当在从睡眠唤醒后立即调用.
只有当使用单一I2参数:C地址时才提供此函数.
无返回值:无副作用:如果使能"从睡眠模式唤醒"选项,将使能I2C中断(仅用于PSoC3ES3).
voidEZI2C_Sleep(void)说明:这是未选择从睡眠模式使能唤醒的情况下准备组件睡眠的首选API.
EZI2C_Sleep()API保存当前组件状态.
然后它调用EZI2C_Stop()函数并调用EZI2C_SaveConfig()以保存硬件配置.
在调用CyPmSleep()或CyPmHibernate()函数之前调用EZI2C_Sleep()函数.
有关电源管理功能的更多信息,请参考PSoCCreatorSystemReferenceGuide(《系统参考指南》).
参数:无返回值:无副作用:无EZI2CSlavePSoCCreator组件数据手册第10页,共18页文档编号:001-68651修订版**voidEZI2C_Wakeup(void)说明:这是将组件恢复为调用EZI2C_Sleep()时的状态的首先API.
EZI2C_Wakeup()函数调用_RestoreConfig()函数来恢复硬件配置.
如果在调用EZI2C_Sleep()函数之前使能组件,EZI2C_Wakeup()函数也将重新使能组件.
参数:无返回值:无副作用:在EZI2C_SaveConfig()或EZI2C_Sleep()之前调用此函数会产生意外行为.
voidEZI2C_Init(void)说明:根据自定义程序的"配置"对话框设置,初始化或恢复组件.
不需要调用EZI2C_Init(),因为EZI2C_Start()API将调用此函数,这是开始组件操作的首选方法.
参数:无返回值:无副作用:所有寄存器将设置为根据自定义程序的"配置"对话框的值voidEZI2C_Enable(void)说明:激活硬件并开始组件操作.
不需要调用EZI2C_Enable(),因为EZI2C_Start()API将调用此函数,这是开始组件操作的首选方法.
参数:无返回值:无副作用:无voidEZI2C_SaveConfig(void)说明:此函数保存组件配置.
这将保存非保留寄存器.
此函数还将保存"配置"对话框中定义的或相应API修改的当前组件参数值.
此函数由EZI2C_Sleep()函数调用.
参数:无返回值:无副作用:无PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第11页,共18页voidEZI2C_RestoreConfig(void)说明:此函数恢复组件配置.
这将恢复非保留寄存器.
此函数还将组件参数值恢复为调用EZI2C_Sleep()函数之前的值.
参数:无返回值:无副作用:在EZI2C_Sleep()或EZI2C_SaveConfig()之前调用此函数会产生意外行为.
固件源代码示例PSoCCreator在"查找示例项目"对话框中提供大量示例项目,其中包括图示和示例代码.
若要获取特定于组件的示例,请从"组件目录"或图示组件实例打开该对话框.
若要获取一般示例,请从开始页或文件菜单打开该对话框.
根据需要,在对话框中使用筛选选项以缩小可用于选择的项目列表的范围.
有关更多信息,请参考PSoCCreator帮助中的"查找示例项目"主题.
功能说明此组件支持具有一个或两个I2C地址的I2此组件要求您使能全局中断,因为I2C硬件采用中断驱动.
即使此组件需要中断,您也不需要向ISR(中断服务子程序)中添加任何代码.
模块独立于您的代码为所有中断(数据传输)提供服务.
为此接口分配的存储器缓冲区看上去类似于您的应用程序与I2C主控之间的简单双端口存储器.
C从器件设备.
任一地址都可以访问RAM、EEPROM或闪存数据空间中定义的存储器缓冲区.
EEPROM和闪存存储器缓冲区是只读的,而RAM缓冲区可以是读写的.
这些地址右对齐.
如果需要,可以通过在数据结构中定义信号和命令位置,在主控与从器件之间创建更高级别接口.
存储器接口对于I2C主控,该接口看上去类似于通用I2CEEPROM.
EZI2C接口可以配置为简单变量、数组或结构.
在某种程度上,它通过I2C总线充当您的程序与I2C主控之间的一个或两个共享存储器接口.
该组件仅允许I2C主控访问指定存储器区域,阻止该区域外的任何读取或写入.
例如,如果主要从器件地址的缓冲区按下面的代码示例配置,则存储器中的缓冲区表示可以按下图所示表示.
typedefstruct_EZI2C_REGS{uint8stat;/*R/Wvariable*/EZI2CSlavePSoCCreator组件数据手册第12页,共18页文档编号:001-68651修订版**uint8cmd;/*R/Wvariable*/int16volts;/*R/Wvariable*/uint8str[6];/*ReadonlytoI2C*/}EZI2C_REGS;EZI2C_REGSmyRegs;EZI2C_SetBuffer1(sizeof(myRegs),4,(void*)&myRegs);图1.
公开给I2C主控的EZI2C缓冲区的存储器表示EZI2CregisterAddressExposedEZI2CRegisters0x000x010x020x030x040x050x060x070x080x09Read/WriteRegionReadOnlyRegionmyRegs.
statmyRegs.
cmdmyRegs.
voltsmyRegs.
voltsmyRegs.
str[0]myRegs.
str[1]myRegs.
str[2]myRegs.
str[3]myRegs.
Str[4]myRegs.
str[5]RAM0x00000x00FF0x000D0x0016该结构可以包含任何变量组,前提是它在存储器中是连续的且由指针引用.
接口(I2C主控)仅将其视为字节数组,不能访问定义的区域外的任何存储器.
使用上述示例结构,提供的API用于将数据结构公开给I2C接口.
EZI2C_SetBuffer1(sizeof(myRegs),4,(void*)&myRegs);第一个参数设置公开给I2C接口的存储器的大小.
第二个参数通过设置读/写区域中的字节数,设置读/写区域和只读区域之间的边界.
读/写区域在最前面,后面跟随只读区域.
在这种情况下,只能写入前4个字节,但是I2C主控可以读取所有字节.
第三个参数是指向数据的指在下例中,创建了15字节数组,并将其公开给I2C接口.
该数组的前8字节为读/写型,其余7字节为只读型.
chartheArray[15u];PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第13页,共18页EZI2C_SetBuffer2(15u,8u,(void*)theArray);下面的简单示例显示仅公开一个整数(2字节).
这两个字节都可由I2C主控读写.
uint16myVar;EZI2C_SetBuffer1(2u,2u,(void*)(&myVar));外部主控可视的接口EZI2CSlave组件支持读写区域的基本读写操作和只读区域的只读操作.
两个I2C地址接口包含使用单独偏移数据指针寻址的单独数据缓冲区.
根据Sub_Address_Size参数,主控将偏移数据指针作为写入操作的第一个或前两个数据字节写入.
在此讨论的其余部分,将重点介绍8位Sub_Address_Size.
图2.
8位和16位辅助地址大小(自上而下)OFFSETDATAPTROFFSETDATAPTRLSBMSBLSBMSBLSBMSB对于写入操作,第一个数据字节始终是偏移数据指针(Sub_Address_Size的两个字节=16).
偏移数据指针后的字节写入偏移数据指针指向的位置.
第二个数据字节写入偏移数据指针加一的位置,依此类推,直到写入完成.
写入操作的长度仅受最大缓冲区读写区域大小的限制.
对于写入操作,必须始终提供偏移数据指针.
读取操作始终在最近写入操作提供的偏移数据指针处开始.
像写入操作一样,每读取一个字节,偏移数据指针都会递增.
新的读取操作将不会从上一读取操作停止处继续.
新的读取操作始终在上一写入操作偏移数据指针指向的位置处开始读取数据.
读取操作的长度仅受数据缓冲区的最大大小限制.
通常,读取由写入操作(该操作仅包含偏移数据指针,后跟重新启动(或停止/启动))和读取操作组成.
如果偏移数据指针像在重复读取相同数据时那样不需要更新,则第一次写入后不需要其他写入操作.
这可以通过允许读取操作彼此紧密跟随来极大提高读取操作速度.

EZI2CSlavePSoCCreator组件数据手册第14页,共18页文档编号:001-68651修订版**图3.
将x字节写入I2C从器件SASLAVEADDRDATAPTRADATA[n]ADATA[n+1]AR/WPDATA[n+x]AfrommastertoslavefromslavetomasterA=acknowledge(SDALOW)A=notacknowledge(SDAHIGH)S=STARTconditionP=STOPcondition例如,如果偏移数据指针设置为4,则读取操作开始在位置4读取数据,并连续读取,直到达到数据末尾或主机完成读取操作为止.
无论执行一个还是多个读取操作,都是这样.
偏移数据指针在启动新写入操作之前不会更改.
如果I2C主控尝试跨过EZI2C_SetBuffer1()或EZI2C_SetBuffer2()函数指定的区域写入数据,则该数据被丢弃,不会影响指定RAM区域内外的任何RAM.
不能在允许的范围外读取数据.
在允许范围外的任何主控读取请求都会导致返回无效数据.
图4说明了8位偏移数据指针的数据指针写入.
图4.
设置从器件数据指针SASLAVEADDRDATAPTRAPR/W图5说明了8位偏移数据指针的读取操作.
请记住,数据写入操作始终重新编写偏移数据指针.

图5.
从I2C从器件读取x字节SASLAVEADDRDATA[n]ADATA[n+1]APDATA[n+x]AR/W在复位或加电时,将配置EZI2CSlave组件并提供API,但是必须使用EZI2C_Start()函数明确启用资源.
在Philips网站上提供的完整I2C规范中,以及通过参考器件数据表,可以获得I2C总线的详细说明和实现.
数据连贯性虽然数据缓冲区可以包含大于单字节的数据结构,但是主控读取或写入操作由多个单字节操作组成.
这会导致数据连贯性问题,因为没有机制可以确保多字节读取或写入将在接口两侧(主控和从器件)同步.
例如,考虑一个包含单一2字节整数的缓冲区.
虽然主控每次读取2字节整数的一个字节,但是从器件可能在主控读取整数的第一个字节(LSB)和要读取第二个字节(MSB)之间PSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第15页,共18页的时间内已更新了整个整数.
主控读取的数据可能无效,因为LSB读取自原始数据,而MSB读取自更新的值.
用户需要在主控、从器件或二者上提供一个机制,以确保在另一方读取或写入数据时主控或从器件不会进行更新.
EZI2C_GetActivity()函数可用于帮助开发特定于应用程序的机制.
从睡眠模式唤醒如果假设使用了从睡眠模式使能唤醒功能,可能需要将I2C主控设计为处理时钟伸展过程(SCL保持低电平).
器件时钟配置(总线时钟频率)可以在睡眠模式输入过程中修改(通过CyPmSaveClocks()函数进行修改),但必须在活动模式下继续I2C数据操作之前恢复(通过CyPmRestoreClocks()函数进行恢复).
为了满足这些要求,在EZI2C_SlaveSetSleepMode()函数中禁用I2C中断,在EZI2C_SlaveSetWakeMode()中使能I2C中断.
因此,当发生硬件地址匹配事件时,会通过将SCL线路保持为低电平(时钟伸展过程)来暂停数据操作.
使能从睡眠模式使能唤醒功能的情况下的正确睡眠模式输入过程:/*PreparesEZI2CtowakeupfromSleepMode*/EZI2C_SlaveSetSleepMode();/*SwitchestotheSleepmode*/CyPmSaveClocks();CyPmSleep(PM_SLEEP_TIME_NONE,PM_SLEEP_SRC_I2C);CyPmRestoreClocks();/*PreparesEZI2CtoworkinActivemode*/EZI2C_SlaveSetWakeMode();外部电气连接根据框图所示,I2C总线需要外部上拉电阻.
上拉电阻(RP)由供电电压、时钟速度和总线电容决定.
将输出阶段的任何器件(主控或从器件)的最小灌电流设置为不超过3mA(在VOLmax=0.
4V的情况下).
这会将5V系统的最小上拉电阻值限制为大约1.
5kΩ.
RP的最大值取决于总线电容和时钟速度.
对于总线电容为150pF的5V系统,上拉电阻不应大于6kΩ.
有关更多信息,请参见Philips网站www.
philips.
com上的TheI2C-BusSpecification(I2C总线规范).
EZI2CSlavePSoCCreator组件数据手册第16页,共18页文档编号:001-68651修订版**图6.
器件与I2C总线的连接SDA(SerialDataLine)SCL(SerialClockLine)Device1Device2RpRppull-upresistors+VDD注意:从赛普拉斯或其获得分许可的其中一个联营公司处购买I2C组件,即可根据PhilipsI2C专利权获得一份许可,以便在I2C系统中使用这些组件,但前提是该系统符合Philips定义的I2C标准规范.
中断服务子程式中断服务子程式供组件代码自身使用,用户不能修改.
参考不适用.
直流电和交流电电气特征EZI2C直流电规范参数说明条件最小值典型值最大值单位模块电流消耗已使能,针对100kbps进行配置----250μA已使能,针对400kbps进行配置----260μA从睡眠模式唤醒----30μAEZI2C交流电规范参数说明条件最小值典型值最大值单位比特率----1MbpsPSoCCreator组件数据手册EZI2CSlave文档编号:001-68651修订版**第17页,共18页组件更改本节列出组件与以前版本相比的主要更改.
版本更改说明更改/影响原因1.
60更改了使用从器件使能位的方法:EZI2C_Stop()现在不清除此位,此位的设置操作已从EZI2C_Enable()移动到EZI2C_Init().
现在首先在EZI2C_RestoreConfig()函数中恢复I2C配置寄存器.
原因是为了实现EZI2C_Start()-EZI2C_Stop()-EZI2C_Start()andEZI2C_Sleep()-EZI2C_Wakeup()序列的正确执行结果.
预计没有功能影响.
自定义程序中的标签"I2C总线速度:"替换为"数据速率:".
"从睡眠模式唤醒"一节添加到了"功能说明"中I2C总线规范命名和I2C/EZI2C组件之间的一致性.
自定义程序中的标签"连接到的I2C引脚"替换为"引脚连接"修改了文本以保持与要求的一致性.
自定义程序中的标签"从睡眠模式启用唤醒"替换为"从睡眠模式使能唤醒"修改了文本以保持与要求的一致性.
更新了组件符号和目录放置名称:"EZI2C"重命名为"EZI2C".
修改了文本以保持与要求的一致性.
解决了当全局变量在代码和ISR中使用时可能被编译器优化的问题.
避免可能导致意外结果的优化问题.
向数据手册中添加了特性数据对数据手册进行了少量编辑和更新1.
50.
a将组件移动到组件目录中的子文件夹1.
50标准数据速率已更新,最高可支持1Mbps.
允许将I2添加了Keil重新进入支持.
C总线速度设置为高达1Mbps.
通过Keil编译器支持PSoC3,以便能够从多个控制流调用函数.
添加了睡眠/唤醒和初始化/使能API.
目的是支持低功耗模式,以及提供通用接口以分别控制大多数组件的初始化和使能.
添加了组件的XML说明.
这允许PSoCCreator提供一个机制来为此组件创建新的调试器工具窗口.
添加了对PSoC3ES3器件的支持.
应用了必需的更改,以支持PSoC3ES2和ES3器件之间的硬件更改.
向组件目录添加了默认图示模板.
每个组件应当有一个图示模板.
修改了EZI2正确的IC的总线速度生成.
以前它比应有的速度大4倍.
在源代码中添加了更多注释以描述总线速度计算.
2C总线速度计算和生成.
EZI2CSlavePSoCCreator组件数据手册第18页,共18页文档编号:001-68651修订版**版本更改说明更改/影响原因为MicrosoftWindows7优化了窗体高度.
在Windows7中,在自定义程序启动后会立即出现滚动条.
使用"将0x前缀用于十六进制"文本,为地址输入框添加了工具提示.
向用户通知十六进制输入的可能性.
1.
20.
a将组件移动到组件目录的子文件夹中.
向组件中添加了信息,以说明它与芯片修订版的兼容性.
如果组件在不兼容的芯片上使用,该工具将报告错误/警告.
如果发生此情况,请更新到支持您的目标器件的修订版.
1.
20更新了"配置"对话框.
在图示中,数字端口已更改为引脚组件赛普拉斯半导体公司,2011.
此处所包含的信息可能会随时更改,恕不另行通知.
除赛普拉斯产品的内嵌电路之外,赛普拉斯半导体公司不对任何其他电路的使用承担任何责任.
也不根据专利或其他权利以明示或暗示的方式授予任何许可.
除非与赛普拉斯签订明确的书面协议,否则赛普拉斯产品不保证能够用于或适用于医疗、生命支持、救生、关键控制或安全应用领域.
此外,对于可能发生运转异常和故障并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作此类系统的关键组件.
若将赛普拉斯产品用于生命支持系统中,则表示制造商将承担因此类使用而招致的所有风险,并确保赛普拉斯免于因此而受到任何指控.
PSoC是赛普拉斯半导体公司的注册商标,PSoCCreator和ProgrammableSystem-on-Chip是赛普拉斯半导体公司的商标.
此处引用的所有其他商标或注册商标归其各自所有者所有.

所有源代码(软件和/或固件)均归赛普拉斯半导体公司(赛普拉斯)所有,并受全球专利法规(美国和美国以外的专利法规)、美国版权法以及国际条约规定的保护和约束.
赛普拉斯据此向获许可者授予适用于个人的、非独占性、不可转让的许可,用以复制、使用、修改、创建赛普拉斯源代码的派生作品、编译赛普拉斯源代码和派生作品,并且其目的只能是创建自定义软件和/或固件,以支持获许可者仅将其获得的产品依照适用协议规定的方式与赛普拉斯集成电路配合使用.
除上述指定的用途之外,未经赛普拉斯的明确书面许可,不得对此类源代码进行任何复制、修改、转换、编译或演示.

免责声明:赛普拉斯不针对此材料提供任何类型的明示或暗示保证,包括(但不仅限于)针对特定用途的适销性和适用性的暗示保证.
赛普拉斯保留在不做出通知的情况下对此处所述材料进行更改的权利.
赛普拉斯不对此处所述之任何产品或电路的应用或使用承担任何责任.
对于可能发生运转异常和故障并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作此类系统的关键组件.
若将赛普拉斯产品用于生命支持系统应用中,则表示制造商将承担因此类使用而招致的所有风险,并确保赛普拉斯免于因此而受到任何指控.

易速互联月付299元,美国独立服务器促销,加州地区,BGP直连线路,10G防御

易速互联怎么样?易速互联是国人老牌主机商家,至今已经成立9年,商家销售虚拟主机、VPS及独立服务器,目前商家针对美国加州萨克拉门托RH数据中心进行促销,线路采用BGP直连线路,自带10G防御,美国加州地区,100M带宽不限流量,月付299元起,有需要美国不限流量独立服务器的朋友可以看看。点击进入:易速互联官方网站美国独立服务器优惠套餐:RH数据中心位于美国加州、配置丰富性价比高、10G DDOS免...

小渣云(36元/月)美国VPS洛杉矶 8核 8G

小渣云 做那个你想都不敢想的套餐 你现在也许不知道小渣云 不过未来你将被小渣云的产品所吸引小渣云 专注于一个套餐的商家 把性价比 稳定性 以及价格做到极致的商家,也许你不相信36元在别人家1核1G都买不到的价格在小渣云却可以买到 8核8G 高配云服务器,并且在安全性 稳定性 都是极高的标准。小渣云 目前使用的是美国超级稳定的ceranetworks机房 数据安全上 每5天备份一次数据倒异地 支持一...

JustHost,最新高性价比超便宜俄罗斯CN2 VPS云服务器终身8折优惠,最低仅8元/月起,200Mbps带宽不限流量,五大机房自助自由切换,免费更换IP,俄罗斯cn2vps怎么样,justhost云服务器速度及综合性能详细测评报告

主机参考最新消息:JustHost怎么样?JustHost服务器好不好?JustHost好不好?JustHost是一家成立于2006年的俄罗斯服务器提供商,支持支付宝付款,服务器价格便宜,200Mbps大带宽不限流量,支持免费更换5次IP,支持控制面板自由切换机房,目前JustHost有俄罗斯5个机房可以自由切换选择,最重要的还是价格真的特别便宜,最低只需要87卢布/月,约8.5元/月起!just...

应用程序错误该内存不能为read为你推荐
虚拟空间购买现在网上有些虚拟空间很便宜,30元/就有100M,值得信不?海外主机租用为什么很多人选择国外服务器租用vps汽车的VPS是什么,和GPS有什么区别com域名空间域名解析,我是一个新手站长,我买了一个空间跟一个COM域名,空间自带一个2级域名,我想把这个COM域名绑定到空间上,咋么办?急急急!求大神帮我,我创建一个游戏论坛,也查不到资料,可以给20元,我的手机13685455534,谢谢vps试用免费vps申请哪里有,免费vps试用的也可以?美国服务器托管美国网站服务器去哪里租?网站空间域名网站制作 域名和空间国外主机空间可以购买国外主机(空间一样吗?)来做私服吗?台湾主机台湾的第一台电脑免费域名空间免费空间和免费域名
论坛虚拟主机 沈阳虚拟主机 域名买卖 移动服务器租用 免费申请域名和空间 科迈动态域名 128m内存 directadmin 好看的桌面背景大图 mysql主机 发包服务器 php空间申请 什么是刀片服务器 刀片服务器的优势 双11秒杀 cdn加速原理 稳定免费空间 彩虹云 沈阳主机托管 监控服务器 更多