|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 A+ ~4 ^8 E( ~. ?$ Hvoid PSCInit(void)
0 T8 i L5 A6 x2 x{
+ Y& f& T8 P4 p3 }9 R PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 y. k6 b' R1 \6 ]}
" a1 D4 _; J4 n* R5 ^; o; e/ U0 {# b/ y5 i# w/ |9 X
void GPIOBankPinMuxSet(void); Q! G6 |0 O3 c0 Z0 d" g
{
- ~) y# w2 O$ |( o) l6 P // DRDY ------------ GPIO6[14] -- 111
0 C9 K# i' i+ s3 L9 C! @) ]& U // SPI1_CLK ------------ GPIO2[13] -- 46
' x1 S1 l8 ?! x; `" R; {" L // SPI1_SOMI------------ GPIO2[11] -- 44
. h4 {8 X) ]9 O7 E* C% @ // SPI1_SIMO------------ GPIO2[10] -- 43) W& M3 W6 u1 h1 O8 o" Z% N
// SPI1_CS2 ------------ GPIO1[0] -- 17. ]' x9 J, B' y
// SPI1_CS3 ------------ GPIO1[1] -- 18+ }2 v$ S! |! ]: {( w" U Z
, U, V. V% q) `0 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
6 f1 r, [" y3 \' e% F- [* t4 u9 h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( S! W; z" B2 A2 \6 H1 m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 Z. y% h( I' H: A, f G6 x+ n) G& I: ^' t
//DRDY
7 A9 |' M$ w* J% `( e' C4 C% d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
T6 ~4 P- O* ` u6 p4 u6 h // CS2,CS3
* P* q, c0 \$ ] I5 e( Z8 O GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS20 |! U2 W& X0 y- D# v5 U
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, ]9 y9 K) N! y! O8 l0 Y
//SIMO5 k) }; j+ H+ l( R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
6 n: h7 _/ C6 J; f4 Q8 W7 F //SOMI- A) P6 U5 B9 O. U% X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI7 _5 a( _6 {5 P2 [- J/ }" J
//CLK
, b; U" a4 y1 ? GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK. l3 J9 `; _. [4 Z9 Z
# K! V+ y) _3 |
// LDAC5 s. i' B2 q" [4 U5 X# Z9 X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
: m/ |1 ^) G) } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! z# d* N# s( l, { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
A! A# K: s3 N; o3 r: O; s2 m6 b GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 F) b% i- ]; Q5 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% `% z, S+ r6 z5 d3 L: ]}
) {4 \" F' [9 k8 k, ~8 X/ s6 C! ^ \5 D% r5 ~$ R; Z
int main(void)1 }+ q7 x( s0 @( I- N1 H
{. m8 l5 s) q, t: ~1 T
// 外设使能/ P# l- w1 T" B+ p Y
PSCInit();
4 `$ e( b' B2 S
: o. U/ P f0 d! u( j2 m' p8 c " a+ v# A2 D5 F2 w# j
// 管脚复用配置 t2 y F) y$ O/ c* ~
GPIOBankPinMuxSet();
/ ]# N4 x0 i9 ?/ p: P for(;;)( ~" s2 |4 P9 N4 ^& r; [$ `
{
0 Y4 g7 ^& ?) R6 W8 Q" Q8 Q SET_SCLK();//时钟正常输出2 e- v; U5 y; @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 W1 Z; [0 {7 n6 ^: ~( ]: E7 r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 `$ I! A: Z+ {) ^; Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: i _# t! R0 w. ?1 B1 ?- ?& ^
& R8 W$ L) `& G3 Z9 ]1 K
delay(20);
% a. l0 @% ]9 }0 j, q5 } CLR_SCLK();7 u2 {) O% ^* q0 O2 \% ]+ o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; E( m2 J% Z3 w: X! v; x: i, B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3) `* x* }( l" A' h: F7 y: U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, K4 J) [) f3 y1 }( ]7 k
delay(20);( A; j% e; O, S1 ~5 J x* w
}0 ]5 c. u! }4 A8 s
} d1 t- _; V. ^
|
|