|
|
使用下面的例子代码,不能使SIMO和CS为低电平:, `5 }3 I& v) W! y: B8 t
void PSCInit(void)5 z8 i" ]( F' j, y5 w( _
{
1 i) u# n' H5 m, T PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);) [% [9 i! R2 m& f& S3 P' K* K
}. a; Z1 q7 {$ r5 M) C
' u) E' N% M; U" t- ?void GPIOBankPinMuxSet(void)
\$ w; K, |! B{
& ?4 Z, V, T3 I, ^ // DRDY ------------ GPIO6[14] -- 1113 \. G6 V9 z7 \ j4 I3 D
// SPI1_CLK ------------ GPIO2[13] -- 46& h) w* G5 j( t; [
// SPI1_SOMI------------ GPIO2[11] -- 44
5 T1 B; y3 O9 c9 X$ | // SPI1_SIMO------------ GPIO2[10] -- 43
+ D* X# U% O+ {5 m // SPI1_CS2 ------------ GPIO1[0] -- 17
% c1 n2 W4 O. W3 M // SPI1_CS3 ------------ GPIO1[1] -- 18
% _0 [1 g/ \. R, t- K f% U3 Q% \0 f# q' c) x) u1 \( J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 N( g6 [2 N5 ]8 p; M4 Y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
8 l+ i# |+ Y4 u0 G) B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
: m- C) F! N% X* u
" y7 w0 W3 i Y1 r% C //DRDY2 _" R- o( v* G$ ^8 O$ {% _+ }1 D
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( }& v$ n, a" r0 H4 l$ \ k1 U
// CS2,CS3
1 n! \: o6 Y b0 T2 o k GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 J @. j6 X! p4 q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* H+ D; h- {9 O8 j8 s { //SIMO
( Y/ `1 p3 s0 W2 b; f7 a+ G GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO+ U8 @ U/ [0 |
//SOMI' O8 \2 ~7 K, `% _+ E6 t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, G6 @: ]; L% K
//CLK
. F6 r* v) `9 W3 Y3 I, f) l* i GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ y( [3 ^7 u$ e+ r' r5 }; ]
1 [& Q! J4 ]5 f7 ?
// LDAC
( R5 I8 O3 Z1 [! E- R2 m' X6 k GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# k3 g" j6 d4 B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, b* Z3 U' ]) _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 E; t( p9 `( V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 h( T g" n) U- m GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; _( \# E# ^& S, h* v: {}
; Y; s2 j7 X! }- F* ^( p, H7 H
' v0 k+ q8 s5 X+ f q$ V4 Oint main(void)3 h2 J8 r; e& f/ ]9 F* g( @
{
- J/ c- }. Q8 D: M$ W# Y9 l6 Q // 外设使能' H, X- j# ~, ?& g
PSCInit();
" L: w/ i. b/ Y: S; e2 d2 _& y
( g4 \5 E( h5 H6 k* J+ ^5 ? ' ?; N. y% ]; y8 B l
// 管脚复用配置1 I. H& M G$ j8 b: l
GPIOBankPinMuxSet();: d! ?" c" n' n/ ]/ @) [# `- f
for(;;)
% q# k5 f9 Q* X3 [/ R8 q {- `2 j/ Q8 P. g: u1 Z
SET_SCLK();//时钟正常输出
q7 Z9 L. w1 L6 O! G" v6 n; n$ m' d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 p3 S% D8 m* s5 j, f( \7 d8 F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS39 |7 g" U" U- F) o+ e1 v$ U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
- j( j+ W% E( d% p5 M7 Z4 g
+ E2 G0 d0 l- ]7 X delay(20);- i& o5 X6 Z1 j# c. t2 n6 a, b
CLR_SCLK();, y# O# T5 M+ ^7 O9 T% h1 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 s9 P- K" c7 x; d) P- Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ j2 y& `' e O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; H0 O& C* d8 S' A) i delay(20); d/ O% H/ P# l' Q/ E) D$ P5 H
}7 a! b! _9 a3 f1 j" P3 O8 j
}
: E4 ` J& |5 Y7 C9 i# Y( P |
|