|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 ^. a9 [: O# Z! gvoid PSCInit(void)+ p+ j7 n* v8 `% r
{
: p" \4 c7 E/ r& |: o* } PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);7 m/ S9 h# g8 C
}
0 b. r0 R+ R$ H/ L h' r$ e1 @7 Q( K0 N. M8 i; d( ?
void GPIOBankPinMuxSet(void)
* k% R {( F+ m) |{: Y8 U1 }6 R8 h
// DRDY ------------ GPIO6[14] -- 1114 J& i6 _# v1 M. W, h! v
// SPI1_CLK ------------ GPIO2[13] -- 46
7 X+ s8 M. R; u" R) t // SPI1_SOMI------------ GPIO2[11] -- 44+ R! t5 {" I- O9 f' T, o2 f
// SPI1_SIMO------------ GPIO2[10] -- 43" m3 d5 F3 L& h1 o& a3 i# W1 o
// SPI1_CS2 ------------ GPIO1[0] -- 17
( D" `" q: l7 p( ~- r: d9 O7 Y% T // SPI1_CS3 ------------ GPIO1[1] -- 18
$ R9 \/ c0 |' ^8 }8 o+ C+ s7 v$ ?4 l7 d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
- l" q3 X4 c( @4 @1 o* M9 y! J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);$ K! [( g' {, J& B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
. @1 L, F1 Y4 H! z* |5 ^
. ~3 t l. |: ? //DRDY
8 n3 {$ Q$ v" }* _) _ A6 z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! u" a1 Z/ N5 ^; z
// CS2,CS3
: X9 D; h, o# R5 ^, L4 B0 Q GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- O/ }9 L: q; a4 Y. l
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
5 b) f/ {# u7 [0 B% o //SIMO: R) [% A6 B5 n ^1 e1 j
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ ]: F9 K# B# U) Z: _# K //SOMI1 y- p1 N+ e, r0 P; y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 d3 C3 _. A# J2 n$ _9 W //CLK {1 D4 `6 P! R- L/ F
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
N, f8 N4 X5 P$ A: `' O. ~! u+ A- a! \9 O6 w1 c* j7 r% r
// LDAC9 G; y8 }2 k& u* c4 @( P
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK/ r2 f$ ?! @# @. @5 K* U+ \% V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN V1 K/ l( \+ M L$ D3 S9 c3 q' l
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' ~0 ^& g2 |, S! @, Y( v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, D5 }- B& V6 I& ?5 W4 E
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY- h5 W) O$ G4 ~# p$ z
}! B! |9 f9 R/ m* n
: |! W. z. g- X8 C* x: ~int main(void)
3 n% d) x2 S( i{
6 @2 \ {# I& n' i // 外设使能& L, e, z' A/ H% [( a3 S' A3 _
PSCInit();
: _9 w! S: _/ H* g( a! H( u& e5 |' g/ J7 ?, W" u( U: ]
0 B8 U! R: j' n7 H // 管脚复用配置1 }* c# u' n- `, X3 l
GPIOBankPinMuxSet();
0 u: Y5 l8 S: v4 o* H4 J7 ]4 M; ^ for(;;)2 b4 F9 C* D- G) F5 K
{
\( _; [7 V; w8 ~ SET_SCLK();//时钟正常输出
; |- p+ o$ f/ D( C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ Q2 e$ m$ y; s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 J+ a q8 h3 b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 K& B0 S5 c5 ~
6 y8 G) |9 s: X. ~$ b delay(20);
3 V8 O8 i! T( H6 Q CLR_SCLK();& u! d9 |/ }" c* y, d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
: Z1 J, n6 V+ \; C' B/ U8 A7 K: D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% j; u" I9 K" s6 d
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 v5 w9 E# c6 E: F/ \
delay(20);
. P5 F, I) n: ~ B& K6 d }3 f/ ]& x% v9 c) ]5 ?5 a1 h8 U( S
}
( x* p+ F' E' w0 O |
|