|
使用下面的例子代码,不能使SIMO和CS为低电平:
+ I" G. q( \+ N+ ]& Y+ {void PSCInit(void)
, h# v: ]: R9 U6 y0 B{
5 x0 ?. R5 ], z. Q PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 ]% N0 N7 ]( h$ z}
3 ]" o& m: D8 Y( D2 V3 ~. ~* f1 }3 z
4 q9 |9 H& `* m7 W" {+ o5 Lvoid GPIOBankPinMuxSet(void)
( |, {; f1 v8 R# g/ Y1 P: Z{
( m' a& g8 n' t( T // DRDY ------------ GPIO6[14] -- 111
4 N+ o6 X, D; B2 P% a6 `% ? // SPI1_CLK ------------ GPIO2[13] -- 46
) e, H1 A4 r6 o$ e8 [" a0 z9 J // SPI1_SOMI------------ GPIO2[11] -- 44
+ Z- v" O/ e8 x7 Y // SPI1_SIMO------------ GPIO2[10] -- 43) Z% }, ], Q3 N. r( D$ v+ w
// SPI1_CS2 ------------ GPIO1[0] -- 177 }5 v2 e, T9 B; k! B b
// SPI1_CS3 ------------ GPIO1[1] -- 18
% Y( D3 I( ^0 b3 I# S! W5 f+ c- [, A
1 M& j4 u' L3 @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ N% ]1 Y! J% w8 x# N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' E% k" G: g) {& f3 P0 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
7 K4 c8 e; e3 y3 C7 i) k6 q) E3 z- h2 B8 O5 b* W% f" [4 p; M
//DRDY
$ f: r. J$ o) u# B0 C+ c; c GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ x, O# O* H' O" V( D! a n' H' ~- i
// CS2,CS3
. r: @6 D" n" f) t3 j, B. x GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 G" x9 D1 ?9 X2 k6 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 |+ s; P @ s
//SIMO
* w/ D) V2 i% `* g GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. f- P6 ?$ p9 G# b
//SOMI+ L {; T( K4 D
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
0 L# h+ e5 v/ h8 n% G //CLK( B2 n, @9 g2 \3 g `8 T, y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK: ^: Y4 {5 y1 @0 f/ ^
3 @" q" h f% I9 R
// LDAC
' R5 g4 W9 ~3 o2 a4 Q3 Y GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 X: P/ e4 F+ K/ ]9 t$ E& M GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" H5 ]! B/ E# Z/ W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
~* E9 w. e% N# L4 c7 w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 j. [! M& \" |- Q+ N GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& }8 C- W: w9 ^, @}
/ m: P7 A5 y& w: O4 N3 M o' h$ Q8 y
int main(void)
- s2 r7 Y) G+ s2 q" Y{$ y" {3 f) p9 o9 j2 _
// 外设使能3 m- E' d+ C) x9 [: ~' m% ^
PSCInit();* s. ~0 Q$ j1 [! G# |
5 F/ `- Q( o' ? T& U2 u3 E( _0 | M
// 管脚复用配置
3 W- v; o- w) D3 ~+ e GPIOBankPinMuxSet();) p- m E- f3 N2 }6 V
for(;;); K; M9 l2 b/ f5 F: z) D( v
{
" D+ {& X2 ^, }" ~; L7 R SET_SCLK();//时钟正常输出
* V, W6 I$ g* I' A+ f2 U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 B) o- p' N2 b9 O1 V/ i! l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 K* T# [ W* N# q& I7 ~- r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
* e; i: p8 [0 `' B7 Z5 ]" v! m" Y' y2 w6 d" N- o
delay(20);
. A! ?( K! e0 R" | CLR_SCLK();4 L4 ?2 R& I/ N* {; Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3. A4 g& _6 n I" r2 N; ?# c' g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS33 B' C( E9 o- G- w. O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' ~& ]" {$ H! f2 `* b/ m8 J
delay(20);% I5 h; l7 p8 d. Q3 B9 ~
}
( y, l7 B& d" B2 w D5 o5 h8 M}8 v: G. D) @$ D+ V% x j) Y6 `& k
|
|