|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
- N2 L' n3 T a9 b8 [+ ^void PSCInit(void)0 y. i8 Y; n: x+ c
{
- N: Q! b8 b, c8 h; k' ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& U# ~( o8 J( |; N0 q6 ~
}
4 t! Z* r0 y9 i4 S: `; \4 I4 |& k# ?+ w" v, h
void GPIOBankPinMuxSet(void)6 K) s+ w( y4 \1 i$ X" F; F
{ Z; f2 d3 H* Z) @) ]& ~
// DRDY ------------ GPIO6[14] -- 111
6 M9 Q+ H& h) z$ b9 E) X // SPI1_CLK ------------ GPIO2[13] -- 46. u) q, q$ ~# r, |
// SPI1_SOMI------------ GPIO2[11] -- 44) p7 K @- Q1 u" w6 a! f( V+ h8 [
// SPI1_SIMO------------ GPIO2[10] -- 43
; N$ L* l8 W* \6 B- h* F( }" @- j // SPI1_CS2 ------------ GPIO1[0] -- 172 Z4 j. N* Z7 h7 A8 V9 Q
// SPI1_CS3 ------------ GPIO1[1] -- 18
) W1 ^7 S6 |' C2 d+ T* |! u/ D/ c$ M) x3 m" _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; P' e! Q0 E; x- u$ C9 c: n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 U! V2 Q4 Q* ?( o- w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);2 X9 s! N$ u8 ^% a! R
; s7 w% N5 W7 n8 n- }/ `* P
//DRDY/ M6 G3 A" G- |1 v0 H7 q$ \
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! L3 V9 ^, ? x) T% n2 k
// CS2,CS3) X' U2 J) n/ D& Y, }
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
. i2 W/ W5 s- t+ @1 r9 c$ i5 y; j- q2 i GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
f; w; s! y! q1 G# o //SIMO! v. J6 q$ Z- n5 M3 }) q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ P$ D% L4 q6 g8 P6 y& B //SOMI
0 Y7 e4 `' x4 t% r: S0 e! o0 _ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
9 N0 k- h+ `9 n( u1 n/ ? //CLK
2 |2 x2 k/ _: {4 _" c+ ~3 u$ S GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 m4 h& I% \9 e1 t' D
6 t7 n$ Q8 i8 Z' v3 U' r8 Z( v // LDAC) ^. t' y# w5 p! ~1 M+ I4 ?. |
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! w& r5 A+ ~. b" B o; E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' n3 |% y/ m8 ~& P0 j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- @5 ?( n7 m' X( m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 d0 l8 ~! S, {4 ~ A6 ^( e: P GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* L( |: m* F8 q$ P}) J( `) @, w" }
) Y1 x9 ^' s0 d# l5 o2 |0 z
int main(void)5 A& S7 |; p- {) y
{
5 e, h# H2 _ I8 T- g% x // 外设使能
. U- h' S! L9 o6 q, ^7 } PSCInit();$ n( k7 o. M1 p
: @0 q; c; |5 F9 ?" i
) k7 b6 R$ o7 b5 D( d // 管脚复用配置
* Y0 t4 I) A: c6 N9 v GPIOBankPinMuxSet();
2 H+ y) |& r1 S- v5 A! f) Y7 r for(;;)
* v3 s. i: n1 i8 m; N {; |! m c* E% {6 ]. b7 S3 u
SET_SCLK();//时钟正常输出
! I: `8 k: `3 y5 k4 p- h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ ~, }8 v: ?* t0 n- d9 p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3! J" \4 k! U! Z( L! U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 U9 K0 S7 J6 b' {$ Y
3 @/ x) A \ k( {2 c- U6 r
delay(20);4 [( {# O, e! N) j" O7 Y- D
CLR_SCLK();' R& x* S( l* w5 t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* U) N7 }- F. F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS38 U$ R' ~0 J; _6 ?: Z" ` A; T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* ?. s8 h: Y+ W delay(20);! ~% G0 ?& W& R* X! J
}
) l. Y2 [! k. \& U5 G% i- Y}
4 H* m. ]& h) Q; l" I4 z |
|