你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
i2c_api.rar
2012-2-1 13:57 上传
点击文件名下载附件
4.13 KB, 下载次数: 864
12_I2C.pdf
2012-2-1 15:25 上传
615.08 KB, 下载次数: 735
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
/* Read the I2C1 status register */
SR1Register = I2C1->SR1;% ?' e9 ~- p! x6 u" |6 c+ [0 k
/* If AF = 1 */% a! \0 v+ h$ y. @( v# o7 E
if ((SR1Register & 0x0400) == 0x0400)1 q* W) M. R7 o4 a
{
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;
}
/* If ARLO = 1 */4 f2 G4 R9 E9 I7 n) P
if ((SR1Register & 0x0200) == 0x0200)
{9 g5 s# P; W! [0 D, ]6 W
I2C1->SR1 &= 0xFBFF;- T$ q0 }2 @+ }, L+ N
SR1Register = 0;% R; @; |3 `, {2 I
}9 D# {6 f: x8 |7 w1 T
/* If BERR = 1 */
if ((SR1Register & 0x0100) == 0x0100)4 T1 M z, b- M9 A! G/ U# \
{
I2C1->SR1 &= 0xFEFF;& A3 u: Z% {* X9 c6 Q$ o9 ^5 B/ K
SR1Register = 0;
}2 p! j2 o: c8 ]: ]1 u! c- D5 ]/ s
/* If OVR = 1 */
if ((SR1Register & 0x0800) == 0x0800)
{
I2C1->SR1 &= 0xF7FF;
SR1Register = 0;. I! A2 @$ P. T8 e ]# h. {) p1 W
}
STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
$ k- A- Z6 c: }1 d1 z
/**
* @brief This function handles I2C1 Event interrupt request, tx, rx
* buffer and number of bytes will be changed.
* @param None
* @retval None
*/
void I2C1_EV_IRQHandler(void)
{
#ifdef ARC_I2C_IRQ
uint32_t i2cEvent;- `+ b/ ~7 s u4 h) p4 `* u/ w
I2C_param_struct __IO *pI2C_param;
+ Q8 F# A: s( ^: y, p7 |
pI2C_param = ARC_get_I2C_param();
i2cEvent = I2C_GetLastEvent(I2C1);
$ [; |7 d# L" p2 D7 H4 C
switch (i2cEvent)8 @ b" Y8 X6 H0 ~& r9 z7 \, m" K3 @; p
{$ C5 E( O. Y, U/ q! F
case I2C_EVENT_MASTER_MODE_SELECT:/* EV5 */
if(pI2C_param->I2C_DIRECTION == ARC_I2C_DIRECTION_TX)
{
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Transmitter);; p- o! M7 Q" k$ C; F- k
}/ `" w6 g8 t; q: c* u
else
{
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Receiver);
}! v6 U/ L" b8 d4 m& N9 Y' D/ B
break;
/* Master Transmitter -------------------------------------------------------*/
case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:( A3 ~: J0 V0 A& ^5 y
I2C_SendData(I2C1, pI2C_param->SubAddr);- ~' s- G. Z4 L4 ~
if(pI2C_param->TxNumOfBytes == 0)
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);/ q( ^5 }3 |: m# U; r! I
break;( e" k# i8 A. m5 r3 u
. t- F% {$ |1 p* n4 p5 p7 h
case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* Without BTF, EV8 */ 0 H8 S: [# U. ?6 P0 L r& {
if(pI2C_param->TX_I2C_Index < pI2C_param->TxNumOfBytes)
{
I2C_SendData(I2C1, pI2C_param->TxData[pI2C_param->TX_I2C_Index++]);% w9 f9 y8 R. R- P7 T; f: Q
}
else % o( z8 Q& b" Z' Y6 M# M
{ 2 _2 u, A& W5 I0 T
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);, G7 O8 \' i" E/ O7 J. V2 A8 N* }1 S
}. z" j+ ]$ ?* w1 Z( ]: s0 R
break;! v5 ]5 F* E* R- [$ Z) j
. K' b& b4 |8 O9 h/ [1 [' F
case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 *// ^8 f! Z! a3 |& p ?5 T
if(pI2C_param->TX_Generate_stop == 1)
{
I2C_GenerateSTOP(I2C1, ENABLE);
I2C_ITConfig(I2C1, I2C_IT_EVT, DISABLE);
}
else) ?2 n) I7 Q! j1 ?5 J* E
{7 K/ z) K+ f1 N6 p5 `! D8 K6 Z
pI2C_param->I2C_DIRECTION = ARC_I2C_DIRECTION_RX;5 n; d( K/ ^" z% |& J8 i' Z. z
I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);
I2C_GenerateSTART(I2C1, ENABLE);7 x! D1 \' f5 a' M) J |3 m
}2 n+ s4 b2 T: h P% E% T2 b9 d
break;
/* Master Receiver -------------------------------------------------------*/
case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED:0 m8 D! h* J9 f' b. Y; H) h
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))2 S$ f0 j" z, s
{! t9 \8 L: Y) b b9 U1 b
I2C_AcknowledgeConfig(I2C1, DISABLE);3 m t2 E& {* w7 s0 b
I2C_GenerateSTOP(I2C1, ENABLE);
}
break;4 R2 r. s) Z& D4 P) c
case I2C_EVENT_MASTER_BYTE_RECEIVED:
pI2C_param->RxData[pI2C_param->RX_I2C_Index++] = I2C_ReceiveData (I2C1);8 h6 Y" m* y) |; p
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))
{
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE); x3 O. [- O9 n D+ L1 t7 r c( [
}( O+ q9 I% E- Q! m9 r8 h9 O( j) h- P
break;4 X' m( ~. U6 t+ E! h
default:
break;8 P0 H0 Q: [2 w* |: ^ C" V7 e
}! p* E+ P7 t3 w& s
#endif
}4 z- Z" [# ?$ t& O# P
回复:STM32 I2C 硬件中断方式实现方法,带流程图
i2c_api.rar
2012-2-1 13:57 上传
点击文件名下载附件
4.13 KB, 下载次数: 864
回复:STM32 I2C 硬件中断方式实现方法,带流程图
12_I2C.pdf
2012-2-1 15:25 上传
点击文件名下载附件
615.08 KB, 下载次数: 735
回复:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图
谢谢楼主
RE:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
。。。。。
RE:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图