|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ o8 P9 I% H& { Yvoid PSCInit(void)8 \4 e( F4 U* }$ Q( S, f L
{6 c! w6 ^$ Q6 L1 t' V, R0 X& H
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
. S5 w! j! o) Z}$ E- q ?/ x4 j
6 |* n3 S+ C7 V- N( Xvoid GPIOBankPinMuxSet(void)
5 Z6 n# l( B& f{$ S( D2 }: T; Z' J
// DRDY ------------ GPIO6[14] -- 1110 F+ i8 e, v& R- C1 R
// SPI1_CLK ------------ GPIO2[13] -- 46
& i) l8 j+ t1 I ?' `( P // SPI1_SOMI------------ GPIO2[11] -- 44
" ]1 }( s9 T3 b& g$ ~$ u // SPI1_SIMO------------ GPIO2[10] -- 43
* _6 j& Z% V5 ]$ L b; j( r# t% D // SPI1_CS2 ------------ GPIO1[0] -- 17
" m' b6 L3 y! J+ X+ L7 s1 D // SPI1_CS3 ------------ GPIO1[1] -- 18
6 u2 R) ]. l9 b5 B% o1 t' i5 Y
9 n. R; J% b* i: t4 p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 r* d3 g. g+ p3 H3 X1 O+ [" s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
. O v# Y- C( v2 m4 g0 \9 _% L/ o$ u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, ?2 h N- g4 a- k# R
4 d( Y) R0 |* O, Y6 n9 E //DRDY( f9 x/ {) z# y0 ]- v% k1 o
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 \9 t5 q( z- U( d4 ^. W g // CS2,CS36 }1 O1 Q$ H, c% ~5 T9 @, l
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 J5 M0 ^& Y h4 ?( A0 _ r" L5 E
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
E. a# I8 S$ I3 \ //SIMO7 i% ^7 v' f7 D) S6 M
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 W+ _8 E, ~6 C9 e# M( l //SOMI- s$ }/ g8 e" C; E% T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% f7 ^4 W+ S" k7 v
//CLK$ y# b2 G- C! g
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 g4 o4 A1 M" X8 t; ?- c# K2 C
6 r; ^# H$ t; b9 P% I6 t
// LDAC& h% q$ K, L* y; e% r
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 W. m) G x' |/ n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' Y9 Z' Q; \5 B( ~4 f+ X! y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ Q% Q! |& P- m/ m7 K8 b& W0 @$ W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3# k1 d+ {/ u# b# n
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 F% Z0 _2 W8 Q6 [8 s N
}# [4 A; a% g3 M( W- \/ A
& z! b' l2 K& N8 J# |6 xint main(void)- a r2 {3 c: J4 \
{3 x2 m2 s+ X9 T* {) \& K
// 外设使能
* Q a0 u1 c; K) d- g PSCInit();
# z2 z( L9 B6 N2 F( R$ x6 Y- q- U, c0 M* ^( l# | |% b- p0 q
% V8 `( R0 B7 ^2 U8 O8 w // 管脚复用配置- E$ F, m: B! ^! k- H
GPIOBankPinMuxSet();4 z( b" \0 h5 D
for(;;)
0 u$ u5 W0 _, J M {8 c1 s% R( O4 c( L: E1 U! J& J
SET_SCLK();//时钟正常输出
0 [# K9 d% w1 D9 f+ J* s3 P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, D9 q3 f5 T! q& f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
+ B9 ?" [0 o# j1 ?5 ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 \' C- n: Z* O" Y/ q
% M7 Q3 I/ J7 H& o- o, U delay(20);
* g9 z0 C/ y% v# G CLR_SCLK();5 y+ g% Q# f$ Z$ H& \, x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; }, W) S1 Z9 }( s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% d3 W' R- t; v. ^ t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. P; z! ~' w5 i0 R9 G2 q delay(20);7 @: B6 N% }. q' W" Z
}$ _2 J# j, ~5 |5 V! X: s
}7 H4 j7 Z' W0 l5 Y W# Y/ `! E
|
|