|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: F, m+ k0 S# a& Y9 r
void PSCInit(void)- U, k, |: G; w. h7 Q
{
1 m" }4 U) P/ G: n+ n: O/ G) s# v6 v PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 h( y) R4 l' C}% F& l7 m1 t( H- j
; A7 F' \! }; x7 R
void GPIOBankPinMuxSet(void)
' M8 {% [5 H" @+ g) C" z9 Z{
- }( r, _2 u0 s$ }; C6 u* k1 m // DRDY ------------ GPIO6[14] -- 1112 d6 R$ Y! X+ M: \' A. I
// SPI1_CLK ------------ GPIO2[13] -- 463 T, Q( t' u/ a7 G3 T6 M9 n9 F1 E
// SPI1_SOMI------------ GPIO2[11] -- 44& N3 G8 Y% d0 f: w6 {* y* I
// SPI1_SIMO------------ GPIO2[10] -- 432 `4 J9 ~0 K1 g# s# N
// SPI1_CS2 ------------ GPIO1[0] -- 17" `- m; p3 t7 z( U
// SPI1_CS3 ------------ GPIO1[1] -- 18
# c$ v+ N! p& a1 K. D8 D- L' u, h$ g# V- V* @2 V8 J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; U5 A. ~8 v2 w9 S- d& c, q! O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
/ P' w4 w: E) \% _% B; t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, i! @- W/ B6 L4 ~
0 s) \; D* @$ T1 h9 x# y
//DRDY
' s( k+ P1 H- U, r0 s GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY. C6 O8 M. c% v. z) V
// CS2,CS3
$ b) L$ E1 P# F% ]5 P6 a/ s GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) Z& u3 e; y1 ^* [5 d$ a, D
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* q8 p7 X" ^5 {3 J6 k
//SIMO
$ t$ @ z ~- K9 |( l GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 D2 u6 d# }% Z
//SOMI
( t* i; @+ ` {& i* e. Z GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 B& q1 a4 h8 k3 y2 Q+ w //CLK
7 F. E$ P/ l1 a s! K6 O GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK8 t5 B; V' A% Z1 K& W3 F
0 Z/ T* M. B# c: _% L
// LDAC5 `5 F4 q% [8 N( e) ~, f1 P3 s
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ J8 v# C K+ m3 J5 x. X0 M& Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 C# e5 o: a) m- K$ P& n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- S& O9 P+ e8 I+ P9 p0 A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
: P$ _* e( {: S7 f GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 N- c, e. V* Y" W
}
) C2 r4 d3 `2 O: H- b/ v
9 l: s' s+ j" L+ Bint main(void)
8 l( D9 h7 Q+ j ~6 ^1 {4 B{ N' Y, p& Z+ n5 x' H. A3 \
// 外设使能
/ a3 b& N# U D3 a PSCInit();
0 j1 v; s- m5 b: l+ ^& m9 D" P7 |4 y8 n6 Q" _" P' i; k
2 f. {) f: O" R5 k' K0 v; K+ S! ?( ~
// 管脚复用配置
8 q! {5 i& @" k! ~- }6 e GPIOBankPinMuxSet();' I7 ~ M( ^, _6 t
for(;;)4 |- J% o# t4 c/ t
{
- r2 |6 [ A; ]' C, _- u, O" E SET_SCLK();//时钟正常输出
( Z# T k9 H/ u/ f: p; d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 q6 |) f" @" ~' g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; C: @7 Q q/ {2 L% S0 _- ?' H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ L5 ~ `% S! b1 C$ F
* p# e; g N& b4 t delay(20);
4 f8 ]6 v$ \; [4 H/ ~" o0 t CLR_SCLK();+ m8 @7 `0 \* S' H* C1 S' u W
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' K, E+ V/ L: v8 U$ T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ |) C B# Q2 R1 I( X6 a* y1 j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 M3 B" a+ Q! s8 o1 Y& Z
delay(20);1 R1 w- o+ p0 B3 v6 O4 E
}
0 Q" S# z8 R7 p: q O' W} ]+ l3 [9 O0 b3 g8 M! Q; H" E
|
|