|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
! u) y- ` A" S: e6 Wvoid PSCInit(void)
! Q4 ?* N& f! t" l. h{+ z/ h/ R4 i, E" Y+ ]
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) T* q9 U" _/ x+ |: s6 b}
2 M: n( F: S6 K. H8 S0 t2 B4 J% \1 k" n- I9 H4 ^
void GPIOBankPinMuxSet(void)
) U8 r1 |9 Q( n7 i9 T2 ]{$ C3 W# G. z M( [9 O1 u8 ~
// DRDY ------------ GPIO6[14] -- 111
: S* _$ L+ l2 p" s, G // SPI1_CLK ------------ GPIO2[13] -- 46! ~( H. \; j7 W$ q$ X9 `8 g
// SPI1_SOMI------------ GPIO2[11] -- 44
: p8 }4 c9 A- q6 l/ h6 _# h // SPI1_SIMO------------ GPIO2[10] -- 43
% F% b( b8 D! l4 w' I // SPI1_CS2 ------------ GPIO1[0] -- 17
- _0 m2 z) G' Z8 D, ?9 ~6 G4 Z* ?/ o // SPI1_CS3 ------------ GPIO1[1] -- 18
; j( o: N" d& C* ~
6 F6 r" Q @8 C: k* Y+ G HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; Z7 `) `! |; F
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);! W2 G* f+ k! f7 F- z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
* e, j* D/ F, y& H3 D2 {/ p* c3 Y# W; l1 h w5 Y, ~' g
//DRDY
; [. k+ [! I c9 x0 N GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY5 `4 U& j0 q' ]7 u
// CS2,CS3
* o. L5 l* y% {$ ~% m9 [# r( H GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
. e& \+ ^9 @" |' X1 ^) V3 h" z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3. V9 O9 r0 |$ y: l4 _; Z
//SIMO
: n) @& }9 Z( Q" B4 P GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& A9 V. D& k5 }; u+ W3 Y6 X
//SOMI5 T0 h* A! v2 \, r
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 z& c% |% X; l; T7 Q
//CLK7 \$ A* D6 ~ L$ Y+ {
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK- s }9 E: B, f% l& x* `, d0 @% R6 U
8 a$ O0 L" \2 C6 @- _
// LDAC
% ?7 v7 k/ l3 q6 T2 b GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) d; h7 d# O% w: s6 p, e( O& g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) _$ _5 T, C( A* v" A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( R* w( z/ u8 H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, q; U9 O; }6 a ^/ ]$ L7 L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* I% q8 H! |1 U6 v/ C# t3 o8 d# r- e}
4 U$ V; V0 N7 T: {- o% f- }" F
- ]; ]" K$ k* ] M& k3 R, rint main(void)8 b& a: C! \8 T9 {1 P/ Y
{
3 W# s; n1 K7 P$ k // 外设使能
$ w$ ^/ s$ ]7 F' b4 e9 ]4 Y PSCInit();
% \: g/ r, x& I, z2 R+ o
4 S: t3 W5 w) U1 {+ j: M {2 n* K: @& A% H
// 管脚复用配置
- b) N+ s/ t* Y- y+ t; |( U GPIOBankPinMuxSet();
3 O# m& w9 }* r3 v8 z* `) R( V for(;;)
& Q, I* }7 f/ W; Y" R, d {5 \, E5 a" ^0 j) s; j& R) M J
SET_SCLK();//时钟正常输出
0 a' _/ _3 i0 n$ g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. i1 o6 u1 ]+ U6 @/ g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
! @6 f" N: E+ @" P- l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN a4 w D# K4 {# B
- M* e2 @' ]3 N) y: u2 q2 f, G delay(20);' P' i/ ~. U9 W, D
CLR_SCLK();0 {6 n: d* b; _/ g' n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* m% \' v ]' x( O1 \% I: H+ _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 a& m1 O$ t% I) y+ F0 @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 K u9 J# L+ W8 W delay(20);' r+ l5 E, o, `: ` t0 p; B
}1 j k* i) \; w2 o; A
}( A5 |5 q% \9 B" I9 A0 i. Q9 B
|
|