|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 D, L) |6 d# g3 }void PSCInit(void)
' C4 f: [; S. c' [& W( N! B4 x{
* g( i$ x) ?/ ~2 V7 s* D# a PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# X2 u7 h; `, U$ o}
1 C* X% t: b: A$ Z% w z
# Q1 T5 E' |4 [; Z8 U! ?void GPIOBankPinMuxSet(void): I' p+ F& f5 T" n" z
{
3 w3 k0 c6 e/ q2 j% a // DRDY ------------ GPIO6[14] -- 111% ~5 J0 C: K0 u5 B" Q
// SPI1_CLK ------------ GPIO2[13] -- 464 F9 Q2 E; }5 o) J
// SPI1_SOMI------------ GPIO2[11] -- 44
; |/ l# T5 v6 Y // SPI1_SIMO------------ GPIO2[10] -- 43' T2 G: U) f( H2 I* O
// SPI1_CS2 ------------ GPIO1[0] -- 17' J+ R: c& v+ V& k
// SPI1_CS3 ------------ GPIO1[1] -- 18# I- B p& G& f% r
" A& e, @6 k. C6 S1 e6 A' _ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 q6 d! e2 x0 ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* I! o3 H, w2 f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
0 Y1 k7 Y# q- w1 X+ n. A" i( j. ]' \8 t! i1 F
//DRDY0 m# i* R' G3 D8 `* i. f
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY8 H+ d3 e! A% ^# J! Z
// CS2,CS36 a% g- Z2 o8 ]2 Q$ m
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" y( ~0 V9 v- H# t/ U9 h v. g
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS33 R* N6 C; y2 B2 l9 n/ D: `
//SIMO: B: v. w4 L4 E4 |% x7 f9 _9 u4 H
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. f( v- f! e+ C- u1 L+ {
//SOMI
D7 P; \( q! z" { GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 L8 F _* E5 r; |, y //CLK
% [0 M; I A# A/ S GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( X& d/ b }& G7 N
! f+ R4 F, J4 G! S
// LDAC: c- s$ y% w- \% e2 I
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 K: M( d7 [( S8 L1 \" K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 r" @& o5 o' ]( c2 d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 _9 Q: F6 Y; K0 x$ ~! C# o( r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ N7 S3 p4 [% l GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 v m G) F: ?1 a# q1 H3 w}
( z @, m) e, ]" `
O0 o5 G8 }/ b: \int main(void)* N) Y/ j7 B( v9 i: T3 O3 {
{; G* V( g1 N9 B9 B
// 外设使能
" `0 z! P. c/ ]# o8 a7 U PSCInit();
8 _3 m2 R' d" s' v
5 c/ K3 }$ C! [0 C4 K 9 U: ?: `4 Z9 F7 Z: r( z! u
// 管脚复用配置6 f6 z$ P. A1 n! m8 h2 U: [1 Q' Q
GPIOBankPinMuxSet();) T3 \0 g, k5 Q& Q% `
for(;;)$ W8 h' Z! K% i+ Q( Y) ?
{: N8 n K9 g; X! n* B
SET_SCLK();//时钟正常输出
6 l% D3 I6 ?! B$ z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, e' Y* h; Y3 D/ m: U0 Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS35 A$ F+ K% _ c# {) ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 d3 ^/ Z1 f/ P2 v/ R8 @' `/ V' r: I
delay(20);. `& L @; p1 Q0 ?! ^% P% h4 T
CLR_SCLK();
4 Z _4 C0 T& S2 k1 ^* { Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3- x+ S7 e1 D+ b2 E7 \( F0 P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 s; C9 a: o3 Q6 p A' u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 V- L4 {- C* N) o* H5 j) p; y: d' f' `
delay(20);
% |3 H. c- |5 i8 e1 | }1 a$ _' ~$ f* D) K/ J
}
: U8 r8 A" t& w5 K |
|