|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( B/ c* t+ Q' z n$ w* j0 s/ U7 Svoid PSCInit(void)
" _$ [% u. Q/ u% z V{0 {$ c* j- g7 M
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ `9 N1 o3 d7 v}
5 n1 N9 I, I7 [9 L* T* c, u. t5 S: H, g
void GPIOBankPinMuxSet(void)% o; K2 a& |% c
{; K* a9 k9 u4 W7 z+ z+ W
// DRDY ------------ GPIO6[14] -- 1111 l; o; j7 e5 ~$ l3 y! H
// SPI1_CLK ------------ GPIO2[13] -- 46% V( G: a* D0 r" {" L4 |
// SPI1_SOMI------------ GPIO2[11] -- 444 |4 U( C6 i7 d/ _7 @
// SPI1_SIMO------------ GPIO2[10] -- 438 a0 P, ^$ z1 P# H$ ^/ k
// SPI1_CS2 ------------ GPIO1[0] -- 17
% z0 D. j5 ]% m8 u ~ d // SPI1_CS3 ------------ GPIO1[1] -- 18
4 t* q" h) E: F% Y8 k
_ E ^/ g+ O4 d2 _ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 u* _% K1 j- E2 P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);- ?- ` r1 @/ D1 @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ p6 }0 ?- e4 Q! i- D. i
/ {" ]- Z/ Q# {- W2 ?2 J
//DRDY# r- [$ i9 H; b1 M
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; M/ s% P, [, {9 X // CS2,CS3. z( m* Q! o6 a
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- t) M, M. k* f0 }9 ?8 q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 f* ], n: g. ]/ u
//SIMO% ?5 j. y. |# b8 S
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! c0 J; q F$ l8 c3 Y$ g6 Y
//SOMI
( q, t- m. q ]2 f$ B GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. n) s3 [" ?' z* F
//CLK. b7 h$ G& _8 z2 W1 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
% ^1 _# v9 F( o) K$ T. O
8 X3 `' I) X7 ~* z // LDAC
8 B$ g- q# C' \* u1 x GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 v4 o* v& K5 b5 P$ w6 D, } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
v' P. _7 S- M" B8 J" B/ N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 W7 F; u% O$ ] GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
1 z1 I0 T( c) i' _ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 G$ C z! b& G; l( s}! b3 _% e# r) R% w# s! ]
% c* q5 w: ]4 |- ?+ G& kint main(void)" T) l' c0 \3 N$ r8 y: P
{
5 Q0 H/ \0 M$ K$ V/ X z# Y! f // 外设使能
7 l; i" Q0 j# C4 {& a9 y1 W) e% s PSCInit();
' ^1 o8 x( @4 h4 m: `+ M( p( M
! ?1 f4 t! t" E& ]: E2 h
: u/ t( E+ g) O% I5 k // 管脚复用配置" l5 Q% S X; M/ ]! {
GPIOBankPinMuxSet();
# I b, {" Z8 A for(;;)/ T6 K3 ~$ e+ k1 \. z- Q
{& ]9 s9 X9 o. h
SET_SCLK();//时钟正常输出
. h1 @! r$ X" Y. E+ x* `' S GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% P/ W n V* P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ X& w% J( E# v$ m, F1 F! D% j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
/ r. S) B5 y4 }: k. Q1 ?
" f. h: `! M0 n' O& s% O delay(20);$ f! D% h: Y: p/ \8 w$ ]' p6 _+ o
CLR_SCLK();# o) b+ C2 W4 N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS36 ]" G! e# S6 H; Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
% _* ]* j# g) z6 e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 E9 ~; h. X* d) n' I6 R delay(20);
! o, y6 Z3 B. Q$ w }; d# q: K" b- ~2 x/ p
}' M" y; ]4 V( r5 X* l# D
|
|