|
使用下面的例子代码,不能使SIMO和CS为低电平:
" P& m: u0 Q$ r- R) dvoid PSCInit(void)
2 f) i$ u; x4 R% M0 i& O$ F{
1 U; F( d6 Q G9 g9 o PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
( L3 S) v' d% V# x7 U b8 @}
2 E3 ]9 W+ Z+ G1 E1 m1 q* g$ h1 H3 G8 K" t
void GPIOBankPinMuxSet(void)) }. c) |3 V+ }9 s! @- S
{
: ?. ?% ?; C$ W // DRDY ------------ GPIO6[14] -- 1117 J; B6 ~4 S& o& v* v3 p' E$ t3 Y i
// SPI1_CLK ------------ GPIO2[13] -- 46
) K9 G5 D/ U/ U- \# N // SPI1_SOMI------------ GPIO2[11] -- 446 N% j& k3 X7 q
// SPI1_SIMO------------ GPIO2[10] -- 43
. f9 C$ h! y( @, P4 H- S8 z9 ~, ~ // SPI1_CS2 ------------ GPIO1[0] -- 17
) h; P# x6 ^! g- x' K6 K- m // SPI1_CS3 ------------ GPIO1[1] -- 18
8 b* q$ p0 c3 g' X
3 S' y* \% z& y9 W' x0 q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. a. y' u1 b% q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 s1 s/ e* J2 G5 U0 Z. R8 p0 p( ~5 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, X# Q, q( v) {+ Y3 ~
" g1 j9 n* i0 i1 M9 ] //DRDY6 |, z+ Y+ ^/ L; @' A
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; `, Q% g% X6 v1 b# i ~6 H" g // CS2,CS3
4 u. ]4 H# `8 N( J1 P" } GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: O Z; v4 k$ Q _0 x
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 y2 U2 g$ C9 b! \
//SIMO
3 }4 p1 O: M4 B3 O' }2 T- e GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* x( W1 i& }7 c
//SOMI# G0 \' b! ]# [2 G# ]
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ b2 f% h- B/ C- x3 O+ ~+ u //CLK
* i( \2 s2 c& B' @ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' j8 W9 O L1 a7 I/ l- w% F* P& ]2 ]7 M5 g
// LDAC* ?5 G; k" q! t3 L% [" A4 j+ n
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ e* Z- J" z& j8 V5 ]6 d5 {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% b5 o7 A8 n9 Z! M# k/ q5 K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 o$ Z6 j7 j) i; w" w, ?6 W" b4 t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ Y( u6 {7 T3 n. W# A GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
5 K- Y* ]+ b' F j/ D% S}
( s- }' e; ?% d
; F) w1 ^4 m+ }& A9 Mint main(void)
4 ~# A8 H" v- a8 e$ N{+ y9 v1 P0 K% t8 f/ u% R) p& D
// 外设使能
( x& I# L/ K u% t) { PSCInit();
0 d/ _) U( v; h, _& q3 p+ g
2 y S9 U: G. i6 S* c4 P, w ( p! D& _" Y6 U0 D+ X
// 管脚复用配置
; z% p0 [3 J2 g6 ? GPIOBankPinMuxSet();
; q; [ Y' m1 d$ t. y [" |+ Y. y! v for(;;)
|3 y# \: i* S9 G8 B, E {
P/ z! |! U* d2 r/ z* n1 Z6 o SET_SCLK();//时钟正常输出0 f) H# b& R$ J: A* y7 x* }. o' f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 f) |, A! X" c6 T+ Z! _& t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
: G9 N/ L6 N q8 i2 y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
" q/ S* B, |2 \* }0 y, {" g4 k7 J; s! U! p# d( _ _. A, T
delay(20);; K/ l% Z* c/ o; G) j) Y& L
CLR_SCLK();
# C& \6 I, _* L7 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 g" R5 m) ]. X D7 [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* d: t& N+ t* I# @0 g/ C% K8 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& b. b t n1 V* q
delay(20);4 r/ b# W: ~0 }% ` q8 V. O
}+ m# O) J3 k: z8 i5 _6 k
}
& S1 u1 e% y9 M4 g |
|