|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ O% G/ ~* n# b p8 cvoid PSCInit(void)
" V; T6 O Z; d" F( ?{
& z) c5 N8 K5 K& d) C; i* ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
: G- u% {, D5 p6 D}
. t2 D {+ f% I- V6 n( d! O% q% H9 l4 ^" i
void GPIOBankPinMuxSet(void)
9 ~' M6 ]7 E D" l- R$ Z{7 c# }3 w" E- u4 `1 b! [
// DRDY ------------ GPIO6[14] -- 111
: k6 T: l* C2 L n: v9 r // SPI1_CLK ------------ GPIO2[13] -- 46- `9 O9 e& l$ Q2 q3 A9 ^( l8 ]
// SPI1_SOMI------------ GPIO2[11] -- 44
" o* G2 U" W& X5 @ // SPI1_SIMO------------ GPIO2[10] -- 438 M" |6 v3 x& ?& c
// SPI1_CS2 ------------ GPIO1[0] -- 17
# ]8 G5 P' I/ ~ |: ~9 ` // SPI1_CS3 ------------ GPIO1[1] -- 18
2 w! Y7 w3 l! s+ [5 M% M6 S5 O0 f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 d6 R1 n! n$ W' W, `7 N# N' F7 n$ ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% ^8 h! b% B7 k! G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
! e3 k2 j: a# Z. E7 u0 K8 d, f
% _( a" j. c! Q& e; x //DRDY$ I2 Y/ r) @' `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ @+ r6 C9 {& V2 D8 N
// CS2,CS35 L! D0 y4 a0 b" D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* r8 h& j$ s8 R
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) i5 D$ q4 _+ g5 j$ P% S) S, U' f4 }
//SIMO7 K$ f: u8 u# _6 X7 {
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. `7 S9 L6 [8 g; g: l- {8 ^- } //SOMI
. V$ M' j5 g6 g' s% I: v GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 h: \# w1 Q% v //CLK
4 O2 w5 O, V9 C GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK5 x& f7 X, c. A) h* `# \, \( _
5 J6 q8 F' |- q4 \ // LDAC/ l2 n- Z) q7 \
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK% c- [, `# | K l+ k* M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 b5 C' c+ L6 b0 V6 e2 m4 K2 Z: i( k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' K/ a- K, G* U* ?) Q) a) q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 q/ k o% c0 z" e GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
/ g) L. t7 O2 r P}
) K3 {8 E% P8 a0 L+ P* T. w# v
( {9 `7 R1 f2 h% W# S1 H8 q# Qint main(void)
5 c7 f/ k3 z; ~8 z" l* z- @ ~{% Z5 U, Y5 K: v C- F( o, ~
// 外设使能
$ a# p1 S) J, V PSCInit();, o- c. S5 `7 y* r J" v9 Q1 y
8 s2 V8 l% r' G1 Q2 n( q 4 r6 w& r$ w( z
// 管脚复用配置3 E9 q& e0 {, q( o4 u
GPIOBankPinMuxSet();, R, m' ]2 g: z4 v7 u2 ~
for(;;)
& E1 h: _5 H% J. @: D {; }; P" }" x6 ^5 I( z3 V0 W
SET_SCLK();//时钟正常输出9 \; k; x8 ]9 d* \- f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ t l5 `+ O J8 q, k5 h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
8 d: M) g8 c0 [: | o+ L; j2 J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 Y0 h6 y# L- v" k, y% L
Y! Q e+ e( t2 K6 m* B& g J% K
delay(20);4 F2 f0 ~2 O0 \# v( ]4 w
CLR_SCLK();
) ^! V$ j- o4 L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3% |$ W; F+ ]6 t; Y6 B2 ]9 E
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 f/ D6 v( C+ s" k( P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% k" j% Y8 |9 {$ L! C delay(20);
4 `* m& S& I/ @5 @7 R5 Y% t' H }4 k) n H6 _+ F$ C
}
" ]9 l& W2 U# R$ O |
|