求AW系列IIC模块中断例程

[复制链接]
3777|14
 楼主| 秋叶 发表于 2007-1-1 18:01 | 显示全部楼层 |阅读模式
imwangyi 发表于 2007-1-5 09:30 | 显示全部楼层

CW5.1安装后有参考代码

program&nbsp;filesfreescale(CodeWarrior_Examples)HCS08Device&nbsp;Initialization&nbsp;C&nbsp;ExamplesGB60_ModulesSourcesIIC_GB60<br /><br />这是基于标准iic的,至于24C02的,你要自己写了.<br />:P
 楼主| 秋叶 发表于 2007-1-5 21:13 | 显示全部楼层

每个技术支持都让我看CW自带的例程,如果能用我就不在此发

  
张明峰 发表于 2007-1-6 11:26 | 显示全部楼层

如果不能用就不会带在里面了

只想吃现成饭的就不要搞研发。
 楼主| 秋叶 发表于 2007-1-7 20:15 | 显示全部楼层

张先生,做技术支持不能以这个心态啊

我们用户主要集中精力在产品的应用上,如果啥都要自已搞定,哪飞思卡尔只需要报价员就可以了,开什么论谈,中央电视台打个广告就成
imwangyi 发表于 2007-1-8 13:23 | 显示全部楼层

肯定可以用

WriteBytesI2C<br />参考代码里修改IIC1D=slaveAddress可以设置外设置的地址.<br />I2C_DATA[0]放eeprom的地址.<br />I2C_DATA[1]开始放写如数据.&nbsp;data&nbsp;len&gt=2;<br />做读EEPROM前需写入地址(WriteBytesI2C&nbsp;data&nbsp;len&nbsp;=1)后再做读(ReadBytesI2C&nbsp;data&nbsp;len&gt=1).&nbsp;<br /><br />
张明峰 发表于 2007-1-10 13:08 | 显示全部楼层

对于只想“守株待兔”的

该是什么心态比较恰当呢?
imwangyi 发表于 2007-1-11 15:45 | 显示全部楼层

如何读/写24C02

读24c02,参考代码需要做一下修改.<br />unsigned&nbsp;char&nbsp;WriteBytesI2C&nbsp;(unsigned&nbsp;char&nbsp;slaveAddress,unsigned&nbsp;char&nbsp;numberOfBytes){<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;Temp;<br />&nbsp;&nbsp;I2C_LENGTH&nbsp;=&nbsp;numberOfBytes;<br />&nbsp;&nbsp;if&nbsp;(I2C_LENGTH==1)&nbsp;Temp3=1;&nbsp;else&nbsp;Temp3=0;&nbsp;&nbsp;做地址定位用<br />&nbsp;&nbsp;I2C_COUNTER&nbsp;=0;<br />&nbsp;&nbsp;I2C_STEP&nbsp;=&nbsp;IIC_HEADER_SENT_STATUS;<br />&nbsp;&nbsp;I2C_DATA_DIRECTION&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;/*&nbsp;Format&nbsp;the&nbsp;Address&nbsp;to&nbsp;fit&nbsp;in&nbsp;the&nbsp;IICA&nbsp;register&nbsp;and&nbsp;place&nbsp;a&nbsp;0&nbsp;on&nbsp;the&nbsp;R/W&nbsp;bit.*/<br />&nbsp;&nbsp;slaveAddress&nbsp;&=&nbsp;0xFE;<br />&nbsp;&nbsp;IIC1C_IICEN&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;IIC1C_IICEN&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;Temp&nbsp;=&nbsp;IIC1S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Clear&nbsp;any&nbsp;pending&nbsp;interrupt&nbsp;*/<br />&nbsp;&nbsp;IIC1S_IICIF=1;<br /><br />&nbsp;&nbsp;IIC1C_MST&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;Temp1=1;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;IIC1S_SRW=0;<br />&nbsp;&nbsp;IIC1C_TX&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Select&nbsp;Transmit&nbsp;Mode&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;IIC1C_MST&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Select&nbsp;Master&nbsp;Mode&nbsp;(Send&nbsp;Start&nbsp;Bit)&nbsp;*/<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;for(Temp=0;Temp&lt5;Temp++);&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Small&nbsp;delay&nbsp;*/<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;IIC1D=slaveAddress;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Send&nbsp;selected&nbsp;slave&nbsp;address&nbsp;*/<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;return(1);<br />}<br />
imwangyi 发表于 2007-1-11 15:46 | 显示全部楼层

读写24C02-2

unsigned&nbsp;char&nbsp;ReadBytesI2C&nbsp;(unsigned&nbsp;char&nbsp;slaveAddress,unsigned&nbsp;char&nbsp;numberOfBytes){<br /><br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;Temp;<br /><br />&nbsp;&nbsp;I2C_LENGTH&nbsp;=&nbsp;numberOfBytes;<br /><br />&nbsp;&nbsp;I2C_COUNTER&nbsp;=0;<br />&nbsp;&nbsp;I2C_STEP&nbsp;=&nbsp;IIC_HEADER_SENT_STATUS;<br />&nbsp;&nbsp;I2C_DATA_DIRECTION&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;Format&nbsp;the&nbsp;Address&nbsp;to&nbsp;fit&nbsp;in&nbsp;the&nbsp;IICA&nbsp;register&nbsp;and&nbsp;place&nbsp;a&nbsp;1&nbsp;on&nbsp;the&nbsp;R/W&nbsp;bit.&nbsp;*/<br />&nbsp;<br />&nbsp;&nbsp;slaveAddress&nbsp;&=&nbsp;0xFE;<br />&nbsp;&nbsp;slaveAddress&nbsp;|=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Set&nbsp;the&nbsp;Read&nbsp;from&nbsp;slave&nbsp;bit.&nbsp;*/<br /><br />&nbsp;&nbsp;Temp&nbsp;=&nbsp;IIC1S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Clear&nbsp;any&nbsp;pending&nbsp;interrupt&nbsp;&nbsp;*/<br />&nbsp;&nbsp;IIC1S_IICIF=1;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;IIC1C_TX&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Select&nbsp;Transmit&nbsp;Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;IIC1C_MST&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Select&nbsp;Master&nbsp;Mode&nbsp;(Send&nbsp;Start&nbsp;Bit)*/<br />&nbsp;&nbsp;IIC1C_RSTA=1;&nbsp;//重复发Start,即没有STOP时发Start<br />&nbsp;&nbsp;IIC1D=slaveAddress;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Send&nbsp;selected&nbsp;slave&nbsp;address&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;Temp3=0;<br />&nbsp;&nbsp;return(1);<br />}<br /><br /><br />
imwangyi 发表于 2007-1-11 15:48 | 显示全部楼层

读写24C02-3

//.....interrupt&nbsp;24&nbsp;void&nbsp;IIC_Control_handler里在发送len=1时不发stop&nbsp;&nbsp;<br /><br />if(I2C_STEP==IIC_DATA_SENT_STATUS){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;We&nbsp;are&nbsp;done&nbsp;with&nbsp;the&nbsp;transmition.*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C_STEP=IIC_READY_STATUS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Reset&nbsp;our&nbsp;status&nbsp;flag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Temp&nbsp;=&nbsp;IIC1S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;ACK&nbsp;the&nbsp;interrupt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IIC1S_IICIF=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!Temp3){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IIC1C_TX=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IIC1S_SRW=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IIC1C_MST=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}/*&nbsp;Generate&nbsp;a&nbsp;stop&nbsp;condition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imwangyi 发表于 2007-1-11 15:50 | 显示全部楼层

读写24C02-4

//.....interrupt&nbsp;24&nbsp;void&nbsp;IIC_Control_handler&nbsp;Star&nbsp;后第一次进中断不发数据stop&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Temp1!=1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IIC1D&nbsp;=&nbsp;I2C_DATA[I2C_COUNTER];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2C_COUNTER++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Temp1=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
imwangyi 发表于 2007-1-11 15:53 | 显示全部楼层

读写24C02-5

configureI2C(0xa0);&nbsp;&nbsp;//a0,a1,a2&nbsp;全为0<br />&nbsp;&nbsp;I2C_DATA[0]=0X0;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;EEPROM第0个地址*/<br />&nbsp;&nbsp;I2C_DATA[1]=0XAA;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;要写数据为0xaa*/&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;EnableInterrupts;&nbsp;/*&nbsp;enable&nbsp;interrupts&nbsp;*/&nbsp;&nbsp;<br />&nbsp;<br /><br />&nbsp;&nbsp;WriteBytesI2C(0xA0,2);//&nbsp;写一个AA到24c02地址为0里面去.<br />&nbsp;&nbsp;while(I2C_STEP&gtIIC_READY_STATUS)__RESET_WATCHDOG();&nbsp;/*&nbsp;wait&nbsp;for&nbsp;memory&nbsp;to&nbsp;be&nbsp;read&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay_10ms();<br />&nbsp;&nbsp;WriteBytesI2C(0xA0,1);//定位地址为0.<br />&nbsp;&nbsp;while(I2C_STEP&gtIIC_READY_STATUS)__RESET_WATCHDOG();&nbsp;/*&nbsp;wait&nbsp;for&nbsp;memory&nbsp;to&nbsp;be&nbsp;read&nbsp;*/<br />&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;delay_10ms();<br />&nbsp;&nbsp;&nbsp;//while&nbsp;(I2C_COUNTER!=1)&nbsp;&nbsp;__RESET_WATCHDOG();<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;ReadBytesI2C(0XA1,1)&nbsp;&nbsp;&nbsp;;读1个Byte<br />&nbsp;&nbsp;&nbsp;while(I2C_STEP&gtIIC_READY_STATUS)__RESET_WATCHDOG();&nbsp;
imwangyi 发表于 2007-1-11 15:54 | 显示全部楼层

如果需要测试代码,e-mail到ileudora@126.com

  
mc9s08aw60 发表于 2007-2-6 15:20 | 显示全部楼层

imwangyi,能否分一份测试程序。谢谢。

mc9s08aw60@126.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

91

帖子

1

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