|
|
使用下面的例子代码,不能使SIMO和CS为低电平:$ U1 _0 y; ~8 h* t* |6 c
void PSCInit(void)* `) A& T N" b# ^# g8 h; f$ K7 @9 e
{
8 ^: ~: J, j/ e+ I8 m PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);; }4 S: m' T/ Y
}
! b) ?" q; p+ N$ Z, P( l) t3 L; b. d' W1 `4 R; A
void GPIOBankPinMuxSet(void)
8 I( k2 P0 K- p- F* W{4 _$ V P H- ^
// DRDY ------------ GPIO6[14] -- 111
+ f3 a8 A+ v- V& b* q) |7 @ // SPI1_CLK ------------ GPIO2[13] -- 46/ C9 f' {4 H" }1 C
// SPI1_SOMI------------ GPIO2[11] -- 44
8 g# U) q4 V1 f# d ~. x // SPI1_SIMO------------ GPIO2[10] -- 43
& P& [& r8 R3 V* B d: { // SPI1_CS2 ------------ GPIO1[0] -- 17
& c5 ^3 x4 G9 Z# l- q // SPI1_CS3 ------------ GPIO1[1] -- 18
6 b+ P8 i& r; K- y3 j" N) O! p, ]* x: l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000); v# p& W5 h ~+ d- x8 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) }4 z G$ |. M3 r) d+ k( ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);. z E; T% X# n( Q6 P# L+ t
- j, M( V& n" u t
//DRDY% w$ n3 w2 `: @5 l$ q7 c
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
$ f2 L2 N/ X0 U( X // CS2,CS3
- r" S6 V( K N- a' ? GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 D1 _9 t+ l. J/ v- X2 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ a u" K- r2 ^# J
//SIMO. ]( P- |/ P& L
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 q) J& X, c. n) O5 S. p! F+ N/ O9 w
//SOMI
! d W$ B; U+ w; q8 d GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 g P% L, b4 c6 E //CLK, h( y/ A! P+ O) S7 U) j
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# ?, u/ p5 v' v2 s7 E* @: m! J- i$ i. b; `4 C9 p5 b9 K/ P& N
// LDAC/ B: Z9 C! v, U
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 x4 n, e2 z: S" m! ^7 A; L( z3 D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& ^* V# _2 P- U8 p GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. Q4 Q S; |& ~: g+ z; q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 r' z* q: ~* R- C$ D
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 T! `* |/ E3 s1 t: y4 v3 y/ r$ Z
}, e, @+ X( r3 c2 l9 D: [- M* g
g) \! |! s9 P$ V& K* a2 I
int main(void); M" v' O* p+ i- i
{
* [# B( R& Z5 F1 L // 外设使能- f4 V7 k2 m& @0 [! p$ |
PSCInit();" e8 k t0 f. I$ R' J2 t6 t
* E: i) B" J9 O4 B5 J. R
/ }/ ~1 Z* z( M6 y // 管脚复用配置
( `& i: S. s, c8 h% Q& J5 {# B% ?: V GPIOBankPinMuxSet();
; F8 Y, ?" L7 w, P R for(;;)
% h6 N& W) s) O6 ?' E, n {4 i5 M$ G! r2 c( N
SET_SCLK();//时钟正常输出( l& W7 l/ T8 ]( ? V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& m7 f1 x) ]# L/ b+ R4 c/ K+ h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3; M. B8 O5 o O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 Q* S8 k4 b ^; X# D# o0 M) O! h
delay(20);3 z+ X2 I$ r$ n( N
CLR_SCLK(); N$ I, U: s. \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3/ Y j! s7 n, X% E7 E) A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS37 Y$ a, A8 T g% [5 E+ }9 }
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# b8 O/ @5 k s/ k( P delay(20);' h% j2 Z+ w$ T9 W$ M4 T' H
}
4 x X$ Z9 ] K3 d}
% W; w" n2 y" M& m% A0 t' N1 K4 Y |
|