|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' g/ f1 v, E! A M/ \% w) n1 F7 g1 V* z
void PSCInit(void)
( y0 o4 [7 c9 o6 j$ V8 U# y6 Y$ Q{
3 `+ H+ I* f( `4 a% z, N$ \, Y PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# {1 P( W% g* r8 g$ {; Q
}5 |/ Y* I' P9 s8 v5 ^ D
3 l- u( w$ g$ G' b. T3 g* ^void GPIOBankPinMuxSet(void)
# N+ r/ A) R* S) j! d+ g{# l, m9 E9 g8 x
// DRDY ------------ GPIO6[14] -- 111# t7 s0 Q2 I `+ J
// SPI1_CLK ------------ GPIO2[13] -- 466 e1 P! k! }0 ~$ f {2 d: `6 J
// SPI1_SOMI------------ GPIO2[11] -- 44# t. B0 R7 Z+ x% z
// SPI1_SIMO------------ GPIO2[10] -- 43
8 |, ^1 e& R: K2 t // SPI1_CS2 ------------ GPIO1[0] -- 17
" D' {; R! Q! o // SPI1_CS3 ------------ GPIO1[1] -- 186 S8 h4 z$ x# N7 i+ q
% O A1 X4 f! H' K; Y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);# Z3 @3 w5 W* F/ Y. _; J/ K( h8 P9 G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# {( T. E: \: T6 W$ v* v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);8 q* E4 R) I a' e
+ T7 b9 `/ d! u9 A e+ d
//DRDY
" z, x$ R7 p9 q4 t! S& r1 o GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY7 P, |. N2 `& h$ g/ K [
// CS2,CS3
; E; w4 h. H& C9 P* E! \ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 C2 S+ J& i+ h( ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 e0 Z$ p, D# [7 w/ K& O
//SIMO
% h/ h) F9 U4 y- j GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 }, Y& W: m N; `5 T
//SOMI
" R Q- I% U2 A8 b, @ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI4 C' D2 f6 Z* T
//CLK, P5 I3 @5 K* X
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! Q" o+ D$ u0 l& Y
& x+ A, K& `( Z- Z8 v8 ] // LDAC
) B5 {. q# r. a+ g5 q4 @ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK, b$ R2 p7 b2 g" C) ]6 @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 V7 D9 k5 @2 s& D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 u/ g- X. ~1 r: v- i6 L/ ]4 R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! x! N) I3 [6 E& W8 P/ Z; I
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 _- `4 z# y- N6 ?
}) l" I+ \" y* ^+ m. G
* G4 w) s. n6 u& c. i% Cint main(void)" z6 W, c% B. Z: y/ e4 E. M* q6 \3 X& s
{
7 O0 D6 I* e. O1 `& h // 外设使能
0 s: E% `( [* {: a, o4 f h PSCInit();) s1 U- p2 o& z8 @
% H- Z1 Y' ?4 `1 d& k) |
# a5 `4 V# Y% \1 C- t) n2 E // 管脚复用配置. C$ Y4 R/ [) E4 T) K# {. K+ {
GPIOBankPinMuxSet();
@% U U5 w- R for(;;)/ J1 x, R! {' k' x9 _% Y
{
8 ~7 k; L$ S. K% M6 s% M7 h SET_SCLK();//时钟正常输出. s$ p; U' U! l2 r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 s1 H' k9 e* F" W4 f5 ~( ^ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3# g8 k) k, `& Q# I C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 ~ U- Z* A1 [6 M( O1 @
2 J; _0 S% f8 u2 K$ ^/ B) ]) P/ F delay(20);/ u- U- [+ k: q8 k/ `# B
CLR_SCLK();
1 v' V4 ]( N( u$ }8 e, `3 ~9 o% J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 @, O7 ]7 d$ |- m8 i) M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 N5 |1 H0 ?9 Z" \9 m+ ?/ } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ ~7 W& \: L) x- h
delay(20);8 h% H2 K* }5 m( z9 ^2 B5 ~4 U/ Y
}9 M3 q7 M; N0 F# h
}! t) q0 p' S$ s" I& e
|
|