|
|
使用下面的例子代码,不能使SIMO和CS为低电平:; N" {. M" |+ ]8 g' J8 ]
void PSCInit(void)7 T# v7 W& W' w% }
{: V7 R1 r- R) P. P i2 S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
+ z J3 T8 L9 H: C1 x}
' g* i$ Z/ n6 e* h3 @8 x' A5 ]. V1 p4 k# u
void GPIOBankPinMuxSet(void)- ]# Y: o4 x7 _( b' {, j! ]
{
0 ]! N% J9 j: G: p // DRDY ------------ GPIO6[14] -- 1113 s. e3 k/ a" f% g* n" b
// SPI1_CLK ------------ GPIO2[13] -- 462 }6 z" B% Z* T
// SPI1_SOMI------------ GPIO2[11] -- 44: b; [6 W8 d" Y! d( l8 B: M
// SPI1_SIMO------------ GPIO2[10] -- 435 K( B. m& {2 o& F
// SPI1_CS2 ------------ GPIO1[0] -- 17
; c, E: X9 p ^3 P // SPI1_CS3 ------------ GPIO1[1] -- 18& T' v* w- h% e( N+ _9 A
- Z$ y0 b1 U) n& v; n( `6 J9 ?& |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 p" P* k7 m; R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
* c$ d6 A& K4 g. o1 n HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080); J3 ~* v5 e( Y7 |7 J3 j
# t z( C( R9 G //DRDY0 B: ?5 Z7 B6 d F! M9 f
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) Q2 b# S! ^# y9 X
// CS2,CS3
" ~7 X& l" b4 w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) y, P4 f1 l! X GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
- p$ {/ E6 }( }2 q! D+ M; k& H; l //SIMO
9 ]1 i U5 y! _1 _- T1 d$ B GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ ?4 C: k& ]$ ]; r
//SOMI+ ~% d& p# c* e; W& F' n
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 _5 p# b( A3 S0 `! s //CLK
* X4 Q3 f: Q% E c/ h6 |& M+ s# N GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 y" a+ ~6 h# f3 M2 x
& @- \9 A9 A* x. A
// LDAC
" h7 Y$ ^5 o3 h( E7 o GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
& O* g) Q% }2 g4 L. L2 r; h: T0 z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. _3 g+ d6 R: T$ ?5 z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' |0 ?7 @0 B. e/ C; b9 O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3& M( t# x& `: e! O% }
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY, v- k# k! J, K! r/ P5 f; [
}
7 E" {& p% X A/ m" p+ ]0 c3 g8 E+ Z
int main(void)
# x4 H+ M) R+ w{
( u5 H+ e' Z1 f7 {5 ?/ m. o // 外设使能
w% V+ z9 m' H& M PSCInit();
( [7 e& G% @2 r' K# C3 t
2 \* u% Q/ I ~" Y0 o4 D: f 2 f, e& L8 m+ y( ], D q
// 管脚复用配置5 r& E* |* O( ~, a, h$ D% l9 ]
GPIOBankPinMuxSet();& u% V. s% W! i) A0 f
for(;;)" d8 {4 `5 m) i
{) N. K+ x$ J2 A
SET_SCLK();//时钟正常输出2 F' q( c9 n: m/ Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) G7 l3 L* D# ~, N2 P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 d! P; f. H/ _/ i+ I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
4 ?* i( h' p* i. e
: v( D* n( r M% Q delay(20);" l( `0 L' D' s
CLR_SCLK();! K# [. ?1 Z+ T! M- @! X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 \7 B# d* F+ N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ L) |& X: y+ q; x/ \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, f* s( J7 n M+ T delay(20);* P/ W: {1 I% U# N
}
- @- l$ d+ h* @$ t/ X$ o& d}: K: Z$ G v& s
|
|