|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ [% L% P: X1 [( [
void PSCInit(void)
3 c, ~# \$ b$ D8 m/ u{
) L4 N |7 q/ l2 a9 f" e PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: B- ~, t8 z t: l
}
2 a1 z: y) d+ m9 l; X3 {$ {) W
void GPIOBankPinMuxSet(void)
3 u6 a3 s) }" [% J{) \4 K' O6 J' }4 f% M+ k
// DRDY ------------ GPIO6[14] -- 111
* n5 | g5 L( m `: x // SPI1_CLK ------------ GPIO2[13] -- 464 g5 ^ @5 P3 H8 @8 z$ v
// SPI1_SOMI------------ GPIO2[11] -- 44
) L+ ~3 n# i) |+ I4 S, L) ] // SPI1_SIMO------------ GPIO2[10] -- 435 n" l8 D& S r9 P& e1 Z
// SPI1_CS2 ------------ GPIO1[0] -- 17
7 h# E( W. E9 [: j8 Q; b- n5 D // SPI1_CS3 ------------ GPIO1[1] -- 184 v* e2 C( i4 w' G
" K3 ]; R a! z: s: {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 g, E4 Q t0 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% Y/ ^1 _8 m* x" N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ E1 L$ J8 X/ g$ L) l+ w# ^2 Z p# V- }
//DRDY
{4 x7 V0 N; P* w' d: Z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY' h4 B/ D6 o2 E6 @7 j" N1 F8 N9 W% z
// CS2,CS3
; U! u! b. L. U' N: h GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ G" T" v3 h2 v, Q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) F3 h" ^* X, j$ e' U* N9 y //SIMO
& N. d, R! }0 ]' Z2 h6 B1 ] GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 y1 F% l* B5 K, n
//SOMI3 {1 K; n3 `! z7 R {* d' C5 I+ A
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. ?% _" M$ ?2 a; w9 v. C
//CLK7 ?+ z4 D/ d) v! v. z) o
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& r% z5 `/ r( U, Z, k, U1 M5 x$ h/ U: B0 q! L1 s# s9 G0 J$ F
// LDAC
7 J& ~1 f% b* z& x' r GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 s. _4 ~3 |2 F$ G5 e2 @ x; e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 j: d* ~' k1 x; Y$ b9 g- F GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! V1 A) W4 ]! s5 @3 I `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3* L; r: @" I) \! p+ O: X k
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 W I) y) t$ D# H) Y. v% R}
) a% d3 s4 T. w" @0 |& _& _, P7 y% P1 p0 L
int main(void)
, \, H& D2 k8 U [$ a{. b/ n) J/ \. w& K
// 外设使能0 q0 r# k6 k# w: \
PSCInit();( B+ j2 U& b" _4 e" [4 s$ ] W
! h0 r3 L/ Y+ h1 f* d( y ~
4 H. G) V+ o2 I V! f. b, W // 管脚复用配置
! h7 |1 ^8 @5 J1 l GPIOBankPinMuxSet();
; i F- U: ^# ]4 Q for(;;)
" M# W0 C/ S# ~. R3 ?& H: U {8 a( U% ^: A2 R3 A$ R( Q
SET_SCLK();//时钟正常输出
% z3 A! p- Q" W$ K$ q; x$ x; c; T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: U) g2 \- ^4 d* W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS39 D+ D: g" R; z c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
M4 O' f3 b5 d- I/ R: c q8 x+ P: e+ m. j
delay(20);
1 H' D: H+ v2 D CLR_SCLK();2 V, a$ A0 {6 b B7 z' p% X4 f u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( C$ p# z8 X) T& @, N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- m7 D/ K e; Z" e! t9 T' F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! ?2 Q {- O8 E/ ~! W delay(20);
4 }, l7 ~' @ @" O( N }9 S) o1 W# g: j
}
0 n& t4 q* e- [1 X: w |
|