|
使用下面的例子代码,不能使SIMO和CS为低电平:/ w, H3 r9 i. j1 f: Z9 h0 Q# U
void PSCInit(void)
. y3 B0 j+ i! }* q; j0 Q% N{ _1 D. z2 K$ ]0 G
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 B- x. V3 x& p. P! @}
& {, z5 a2 |1 @# J3 D
. m7 c5 i: _, g7 j3 u. [" ~void GPIOBankPinMuxSet(void)" M: f; w2 Z. F1 o
{
5 B) u1 x6 y6 E2 T* l3 N: y8 E // DRDY ------------ GPIO6[14] -- 111 ~. }/ d( A; y) k4 Y
// SPI1_CLK ------------ GPIO2[13] -- 46 [, [; [" V5 I( l6 n; C
// SPI1_SOMI------------ GPIO2[11] -- 44
7 I/ K/ k' W2 N$ B/ x+ Z- h+ [ // SPI1_SIMO------------ GPIO2[10] -- 43" j. i& D7 V1 i! o
// SPI1_CS2 ------------ GPIO1[0] -- 176 T) o1 [: y4 F2 r
// SPI1_CS3 ------------ GPIO1[1] -- 18
: H* w) I6 E: d6 C- s( Y1 G E1 ]9 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( F1 u N( @8 o k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' F! y2 Y' v* S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ a# s/ z+ r6 T2 d. d! `# ^: n5 [7 d( G- F5 ^, m* G+ O3 D4 j
//DRDY: M2 T* l2 ]1 S% w' r' L
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' S1 D/ D, g2 _7 Z // CS2,CS3
9 Q( D# A: C9 Y7 s d GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 G- r( I7 }# B+ r
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 [, |! Z( h: _1 ~- v) q+ z //SIMO
; U2 Y7 O# Z; c- Y! H' Z# l! O4 w GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- \# k8 g; [6 d- h4 _: L
//SOMI* X! A6 z2 b& }. N" G+ N, ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. X7 F/ [1 y( B
//CLK
3 o9 ^0 r$ j h$ M9 ` GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
0 _3 k5 _( k: X, w4 _% [7 I# C6 ?6 B
// LDAC% O* g& c, L# X3 g
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
1 n- s( K4 X: x$ }! f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ a+ e1 V( o' L O0 L8 o/ d! m: h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 ~7 P7 A; V @3 ?- b, w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 B. h3 s. p, j9 W
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 n+ G. T6 f( h d. N3 h}
" `5 o6 ~/ `# x4 C% t) J, Y! ~4 _2 h0 {
int main(void)
' @# n2 f7 t$ q& d4 x# K{
' q. g% `# E3 K, [ // 外设使能
3 V# g `- x1 ^3 T* s" b PSCInit();
4 c6 m0 v% g/ w, u F$ o2 B' V5 Z1 @3 V8 l
0 N3 b; f. x9 I2 C
// 管脚复用配置9 D6 P- q/ @% D- |
GPIOBankPinMuxSet();
3 x' e0 S; J% L& I1 v2 e/ M/ O for(;;)
2 _, P: G7 v' @ {& M7 Q' i8 s/ H) l" u
SET_SCLK();//时钟正常输出
3 Y8 z9 M. ^4 Z/ b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 C& v. p3 ]8 s& T0 a: J& }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 R9 _% k1 l- \8 o- \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
2 T" W: ?* \/ e8 G$ m8 Q% F, o5 h% m/ f7 Q7 z( J, D6 q9 E
delay(20);
: R I; n% s- O' w" y% b$ R X: d CLR_SCLK();# z6 ^2 m" T% E$ A( Z u+ B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
/ p& B* X0 n+ m' O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& l4 @9 m+ w3 W; w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: l# v; y* J* X* L. h2 ~$ `% d
delay(20);5 e. y1 C- `. ^8 b' ~. J
}+ m# e! t0 F5 Y% Z( n5 z. F
}
' M& G8 U4 Z( Q% T |
|