你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
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;
/* If AF = 1 */6 u9 J! g+ ]2 c* z% Q, W5 g
if ((SR1Register & 0x0400) == 0x0400)
{
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;$ Y. ?8 L- V% F m1 |
}8 n( J" c5 Q3 g2 O: K; L
/* If ARLO = 1 */- T0 k/ \+ w" D Z: d) W
if ((SR1Register & 0x0200) == 0x0200)5 A- A' L1 c* Q# e
{% A8 F k. r/ }) I( s+ \& x0 ^
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;
}
/* If BERR = 1 */
if ((SR1Register & 0x0100) == 0x0100)
{
I2C1->SR1 &= 0xFEFF;
SR1Register = 0;
}9 N; U$ ~, x1 V2 @
/* If OVR = 1 */6 I" ~- W# a7 P) F: J
if ((SR1Register & 0x0800) == 0x0800)
{
I2C1->SR1 &= 0xF7FF;) I) P( z# @8 T7 {
SR1Register = 0;4 `5 i. q5 E6 g! p8 L' {0 C( X: E+ j. r
}
STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
' f1 w4 U5 x* V
/**
* @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)" ?) B. Y$ m' c7 I5 {3 j: I! S
{
#ifdef ARC_I2C_IRQ
uint32_t i2cEvent;& h4 p# @* d! O3 R% ]* B$ ^
I2C_param_struct __IO *pI2C_param;
pI2C_param = ARC_get_I2C_param();4 J, c& M, r: ~% ^
i2cEvent = I2C_GetLastEvent(I2C1);
switch (i2cEvent)
{& m, b7 \6 C; r: A0 L; F* i- o
case I2C_EVENT_MASTER_MODE_SELECT:/* EV5 */
if(pI2C_param->I2C_DIRECTION == ARC_I2C_DIRECTION_TX)
{. o% H2 R5 N& ^% o7 k0 M
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Transmitter);
}. x% d. W' T- ?& t8 ?
else
{
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Receiver);
}
break;
$ E' L" ?' A: a) B3 T5 i
/* Master Transmitter -------------------------------------------------------*/
case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:+ ~7 r% m& @2 v/ }. c9 F% l
I2C_SendData(I2C1, pI2C_param->SubAddr);
if(pI2C_param->TxNumOfBytes == 0)( y# \' Y/ w# ~+ h* E0 M* i0 c
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
break;7 C) i. G1 r) O4 O" T# n: I* [' p" j
! b4 @3 x+ U" _6 Z. m! m
case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* Without BTF, EV8 */
if(pI2C_param->TX_I2C_Index < pI2C_param->TxNumOfBytes)
{
I2C_SendData(I2C1, pI2C_param->TxData[pI2C_param->TX_I2C_Index++]);* z+ I- `; a( J' Z
}
else ( s' Q9 |3 R) I5 i7 M+ c, B
{ 8 S6 `1 p5 N- m4 g& S
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);: U# @6 n% k, P
}
break;
# b+ z) U2 N& T, e5 ?5 R
case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 */
if(pI2C_param->TX_Generate_stop == 1)
{! g" i+ `& f- W
I2C_GenerateSTOP(I2C1, ENABLE);2 R% \$ i( Y. E, ^( s" X
I2C_ITConfig(I2C1, I2C_IT_EVT, DISABLE);
}1 Y1 c% g" j& J& C1 c) `8 s1 H
else' p" ^$ T: R8 j) l9 U; e
{
pI2C_param->I2C_DIRECTION = ARC_I2C_DIRECTION_RX;! g: }, o! h, `8 h) C( I" u
I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);. @7 `1 _( Y% J: x7 H# G
I2C_GenerateSTART(I2C1, ENABLE);
}2 E0 ?/ j+ U. X! x# C& n
break;8 l) u+ S+ o: ^, T4 ^
$ }; [, b1 b7 A. z- p
/* Master Receiver -------------------------------------------------------*/6 e3 V$ D+ ^$ K, c, `
case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED:
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))
{
I2C_AcknowledgeConfig(I2C1, DISABLE);' ^) y1 c8 S% |5 A' b
I2C_GenerateSTOP(I2C1, ENABLE);0 H- y" q! B' M9 s5 ~
}7 c; |5 Z2 P3 @" C% s& V7 S5 D6 @' W# A
break;
' U) N6 Z" X9 a0 k; g
case I2C_EVENT_MASTER_BYTE_RECEIVED:4 o) W- r$ e3 E! F+ x0 S
pI2C_param->RxData[pI2C_param->RX_I2C_Index++] = I2C_ReceiveData (I2C1);& B/ M/ B$ s; L) Y* J+ ?
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1)): o5 o7 D2 u% h7 H) W7 Y5 O: `
{1 E/ H* a; L% `/ P0 P' y+ w
I2C_AcknowledgeConfig(I2C1, DISABLE);7 I6 h5 q6 H5 i& u4 U
I2C_GenerateSTOP(I2C1, ENABLE);
}
break;% G, J5 X, r6 S" x6 j$ C+ \% a
6 C( R4 N: b3 s' E- x) @. H! J
default:
break;6 h7 W- D5 b3 V! ]0 V
}. l7 |1 h: I( ]) ?. M* M/ {7 b
) I1 d& b# i" A0 ?
#endif
}
回复: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 硬件中断方式实现方法,带流程图