|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 g/ V8 H3 i( ^' `1 P1 p* w* z! U
void PSCInit(void)8 U* |4 W. ?/ Q1 D
{
9 C2 i8 f/ B( n4 }$ C3 r PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
& I* n' I# S# o$ G2 Z* S9 N}1 p* K' l, j# G! l
r9 i: b3 S2 H2 L0 q- F
void GPIOBankPinMuxSet(void)
& P4 r6 x$ R. P% X5 ^+ Y* Q- V{: `4 f* o, M3 w$ L* D3 U* _
// DRDY ------------ GPIO6[14] -- 111
% k0 U# G' B y$ W' I3 A // SPI1_CLK ------------ GPIO2[13] -- 46
) s+ v. i! `4 b+ p( y // SPI1_SOMI------------ GPIO2[11] -- 44
! b4 D' R: o! M& q) I1 n" W // SPI1_SIMO------------ GPIO2[10] -- 432 t7 M# A% a5 @
// SPI1_CS2 ------------ GPIO1[0] -- 17" V$ C% k( J/ c2 C
// SPI1_CS3 ------------ GPIO1[1] -- 18
% j+ B. p' l% f. h* B
2 L2 e; R* z& l! f6 Z$ } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 d3 e: A& s6 H2 o1 S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 U" C! _. O0 I! ?) b9 }) e+ L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, j" _& g" L3 I- V% Y; F
7 D z) J0 ]. o, s //DRDY
- R# S0 n9 i7 h5 p1 Y GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 G& Q# Q& y) v8 F$ C K // CS2,CS3& w3 \0 B3 n) U% f, o+ [- w: D
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2/ |5 `, Z- q! a4 z9 K$ r
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' M+ o$ ^- M8 U; c: A% d //SIMO, q# o4 f. E; Y6 l) }
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. A* t* g( r; ~ O U6 ]3 z3 M3 ~
//SOMI
" D& |* I: B" |. p, ^ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI4 f. v7 K6 W y0 I! |7 Z7 Z _
//CLK5 S+ K* W! @8 D% Q$ Z9 L" z
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 ^7 N9 Y$ K8 B
2 [* w( O' w4 c9 Y* J // LDAC# g5 w! I4 n( |1 j# J+ c7 {8 R
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK/ x, e9 U& F" K" S# }+ B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 H9 K K4 h2 B) {! Q- d) ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 l i8 O/ Q. [4 f0 r- a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; `$ E" F2 O& _1 N7 x
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY& ^+ v* z$ N5 i
}
0 g) E; L0 Y7 n: J- P. K: L! i, M7 q: e4 f
int main(void)+ @7 ^& w; P1 p. R5 N: ?7 `0 Z
{
& ~0 |* L0 `4 a% E [ // 外设使能
0 x2 R1 y& e& R, h# \, o PSCInit();; f$ _$ o; X4 k1 M7 v
3 t- O) J# f) S
3 ~$ j0 u% k, ]$ ?6 b. i // 管脚复用配置
* o& @) L6 x( z& m3 D GPIOBankPinMuxSet();
7 P0 I9 Y2 o8 A; _7 l( o for(;;), V2 I% C' {* |1 z# }: C& V5 W/ E
{2 [9 w1 }$ D6 ^
SET_SCLK();//时钟正常输出. s9 m: C% h/ T) N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% t0 A' J% I4 s; A' n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ d; z$ o0 i' ?, ~3 ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- y1 g* D% Y) Y; t
6 I7 ^$ f2 D- O
delay(20);1 N! N4 l( d+ j* S- ?9 ~- X
CLR_SCLK();
% u$ ~' P' I! d% {2 D G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: T* _" H- W" F/ E3 s& [" g7 V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
1 x, V# f6 f1 Q# ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ w7 U0 Y1 M, n delay(20);
1 k- o5 q+ |; h0 @ }( ] H, j% W) L4 v) x. T
}
$ _! v) } _7 k; Z |
|