|
|
使用下面的例子代码,不能使SIMO和CS为低电平: e, L7 f1 d0 D% V: E, O0 ^
void PSCInit(void)
1 f7 ^2 k. a4 i2 j{4 [. E3 ~2 [* R `% ^0 h/ W+ J, k
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 U" n' i2 G: l7 w
}
6 O2 i9 x+ \1 [: P( d
) j# E! W0 J6 T1 r8 G( Evoid GPIOBankPinMuxSet(void)2 L7 C0 d8 x& r4 N
{
7 E; u/ L) k* r& t // DRDY ------------ GPIO6[14] -- 111- r* d6 W+ G! H1 @0 n+ \# S% I
// SPI1_CLK ------------ GPIO2[13] -- 46
! q. U* d$ Q: U) Y. B3 { // SPI1_SOMI------------ GPIO2[11] -- 44; T$ S7 k5 u4 o4 d" v' P2 u
// SPI1_SIMO------------ GPIO2[10] -- 43: ?& M, z5 v% w+ \: u4 {, i2 |5 X3 Y
// SPI1_CS2 ------------ GPIO1[0] -- 17
' A4 i) v5 ^) A& G* `5 V$ N // SPI1_CS3 ------------ GPIO1[1] -- 181 F a0 u- F: V5 m- w/ C( ]8 I1 y
. x V% {8 o8 L- p. i) T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 h3 M$ i- f; F* c* F5 P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% `! p( K/ D6 N2 q# O b W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 C1 L$ w3 _5 d7 j1 ^/ ~+ n
; U$ {- H7 A7 a' a: @- Y+ Y5 Y
//DRDY! R% y( E& Q t/ l- m
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( l/ J R0 `7 j, n: h3 C, B
// CS2,CS3
2 P) b* ?* M: D GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 r Z/ v* | T! [, a# a: T& Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 d* v- t9 V* q' R: ^ //SIMO
% S$ O8 X8 t5 W8 { GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: `: U3 t9 P( C
//SOMI( N8 }) K0 o. W
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI1 y5 K' G$ H. F, i0 l% w
//CLK O" G% \ t- l7 n& [! b% X% Q$ G
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# T2 F8 O$ F3 Y' |
/ F6 u& v- {* k& E) g! g
// LDAC
' o2 H" h& O3 K1 L% B* _ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' [1 Q# {% o1 v J! g% e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 {+ H2 ~' U* M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- d. C- V9 ^' h x" k* s; W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 \9 D. T( v0 `3 v( M GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
3 y. b% Y1 ]: |}
' x' J# n* q/ u7 P" T1 b) P& q
8 x% ~+ M8 k) s/ s) H) ]int main(void)
7 {; y E2 p l: O8 ^" ~( e5 Z{! a: N o$ J9 m; Q+ [
// 外设使能
" z: a O3 `$ r$ C7 s9 H+ ~ PSCInit();7 L: O' t2 x6 o3 d, i e
+ E# L7 B2 Q) x! s8 d
v# V+ l) L) g, h7 e2 J // 管脚复用配置
# `' V- I9 F1 b5 r/ y! s GPIOBankPinMuxSet();
" x+ e/ S9 j5 U: }* ]* n& E9 | for(;;), |. B- R) c: }0 f4 d
{& r7 U: d- j5 ?
SET_SCLK();//时钟正常输出! g: Z, L: _2 D& c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% a" ? t6 z: n+ p8 f1 g- s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# T5 b5 s/ k: S1 Y& \) C" Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
8 N2 Y5 g% `$ N4 M2 S) }3 v/ O( ?
' D0 \6 z) _+ ~, ]3 { delay(20);
) [! { z3 m' I CLR_SCLK();3 `/ E+ T" M5 a. d( x! T' t/ ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 Y2 I: s$ H: ~- i5 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ c& N7 b& y5 M% M6 s# Y3 A. | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- j! v: J. b: R5 o delay(20);
# d& r1 q# G( X* n } M" K, `3 m, h2 H8 G2 }1 T
}* B e: m1 M# }8 e1 r
|
|