|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
) M; I; U& u1 r J/ Yvoid PSCInit(void)
* L% e0 y( z- w{
' u) L* f- _: r( f; j1 h PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& t- v( M* p1 b$ p
}
2 c4 R1 P/ U4 D4 i
2 L0 f k: `0 Tvoid GPIOBankPinMuxSet(void)/ d+ c5 J' N" a T; d! L: T
{+ ? E, K- R! U* K* x
// DRDY ------------ GPIO6[14] -- 111
0 E$ ^4 m# b1 ^ // SPI1_CLK ------------ GPIO2[13] -- 46" i) |. ~0 A! \" f* |
// SPI1_SOMI------------ GPIO2[11] -- 44- P) \' F; Z& b; R3 C
// SPI1_SIMO------------ GPIO2[10] -- 43
6 o0 o" n6 L# I: ~0 D // SPI1_CS2 ------------ GPIO1[0] -- 17, H& [# E* F8 Q' |0 _
// SPI1_CS3 ------------ GPIO1[1] -- 181 Q* @5 l O, T! U" f7 e
( V. m8 O+ f2 L8 G5 c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: ^2 B! z1 ^. i) E, K- K6 D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ S9 D& y3 R8 D0 i0 `5 E7 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% m7 z3 d) {6 k- N4 X
% }6 k w9 t0 r% r. p* {7 t& u
//DRDY7 n2 }, ?! a, c l" x# s5 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& X8 d1 T. ~/ {- V) A // CS2,CS3) y3 Y6 k8 {0 s. s# w. u# N0 V" F* G
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 n3 X" \ P" L9 b: K- t7 W
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 K+ \8 O/ ]. V! s" m8 Z //SIMO
' O& |' G/ m6 E e2 ? GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# L+ x% J& {+ f
//SOMI3 r; s, S5 m1 w" e7 S4 c" f
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. ], t; H! B( |; B! A
//CLK
% [+ {% f0 M3 n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: z, }8 P; L0 }+ D6 }8 K- R2 z6 i/ L; a9 d- }' K. `
// LDAC' X( d. P; E5 {- |: X4 I& H9 X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ P+ g! l/ v& ]/ x+ ?0 G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 H. B6 ?4 z! p2 r9 F, l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 `& B6 L' ^, G1 C) @6 d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS31 d7 z1 a& p4 c/ c+ w
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: P* ~1 x8 u) N7 ^/ h}
. r* `; u/ s" ?" e/ M2 r- x- T1 I3 I5 V! P/ K
int main(void)
3 }/ Z/ c) ]! b1 g{/ ]! U0 a4 n8 q1 H
// 外设使能
$ W# t# q; n- ~+ w2 W PSCInit();3 S* ?7 d7 ?9 K, ^! t$ B
& F# ]1 t4 z( T/ l8 [# a w5 O! [0 h % g0 L$ y* ]! J: A* v& W
// 管脚复用配置0 v0 f$ E# m6 c
GPIOBankPinMuxSet();
/ B- ?. y& u8 {3 B" ~ for(;;)* L' d" }2 O1 t3 p" ]2 ^0 Y
{+ e8 p8 q- V* ^! A, e9 t" P
SET_SCLK();//时钟正常输出
! L" S0 I$ W4 e+ _$ Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( W: A. T+ [$ p2 z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 \/ d2 ~) i# s: T% h3 l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN2 L+ _7 d: K5 a3 b+ B/ |% ]# g: ?
& X _5 |' m5 i5 [* T# Z# U+ ? delay(20);
8 ~& C& m' \0 [1 f- L# Z$ v CLR_SCLK();. T- c0 i9 a' f. I6 q) k6 {& O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' S: I% |/ Y! {9 Q' v% t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 ^/ o/ K- u$ ]: y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 ]' Z9 w7 O: s+ m6 _8 a
delay(20);
! [; N8 k6 P) G7 G r+ n) g }5 f d$ O" o# i
}
w1 P* y# z- C8 C1 m |
|