|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" T! C0 ^% V" B9 Y: u& W# x: c& Z6 Mvoid PSCInit(void): F7 c7 d$ {5 ^( G! a
{
$ o: Q) G( J. V. g5 @3 g. l6 O PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
9 |' T+ X$ A9 ~* K+ ]}
& T E- I& G, w M: [
8 T% L& W+ t# z% n; \void GPIOBankPinMuxSet(void)
$ z3 t! h% |4 ^& p! [; c{
% r, X; F$ g5 T6 j4 f, @3 Y, ]2 z4 i // DRDY ------------ GPIO6[14] -- 1112 H- M/ [& T- m5 a8 o, W
// SPI1_CLK ------------ GPIO2[13] -- 46, L) O8 U$ {0 Z& T
// SPI1_SOMI------------ GPIO2[11] -- 448 F$ T( ?3 O5 J7 n# {1 k
// SPI1_SIMO------------ GPIO2[10] -- 43
* }7 K; B* N% c // SPI1_CS2 ------------ GPIO1[0] -- 17# Q! m1 k: j* J+ N0 e! s
// SPI1_CS3 ------------ GPIO1[1] -- 184 K+ P1 |5 `2 _' h( g, |
/ K$ |! \; Y l: Z4 Q3 P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: G/ C% x) J& k" I) s( g0 t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 ~6 V( Z% z7 j& x& j, a" c4 g! t% h, ^
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( `& j0 M, h9 P8 G( V
- L A# {+ t& d; l
//DRDY8 ]' N Y5 G4 b& Y3 W7 P y9 c
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
1 f2 z) m& J, k, ]# [1 E9 a // CS2,CS3
* Q/ V2 |# E P, O+ V' \+ K GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 U9 t6 ?+ G6 I5 H
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 ^2 S8 W$ `& @8 ?6 W Z
//SIMO/ U9 j0 | i7 x1 u. T0 P- H6 c- N8 v
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
* Q0 M o0 O9 y2 F1 v //SOMI3 g2 p3 l! F q* `0 |
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 R; w0 T9 {! p) l, G
//CLK4 {4 E, \; m* T
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ {. ?! u# a! o* Y, f
% s1 D) [; _6 U- [: T) I: }
// LDAC
5 @. Z. M8 x7 P+ l+ y6 G GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ u7 g! n! Q6 E% w( w$ x9 C2 W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& r+ l1 ^2 J/ A( L% o. E3 K6 B GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 l( s% p7 C6 M# S& U a
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 h& \: t& h$ c& s5 H; J( m
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 o4 c- F* _4 M6 b: c/ A
}) f/ s5 l' w- f! Q: H
$ m: i5 T& M u, R# Y4 @/ |
int main(void)
$ s' _5 f9 _8 ?. V: }{8 b- y5 _9 j' k9 t e
// 外设使能
; I( e. r9 ^4 k/ J: L1 I PSCInit();
5 _, i2 l; ?. G6 U3 Q, u. l
$ l9 e! I$ e( n7 K9 g1 K
$ u* `. p6 K s0 {6 b) \: l$ j // 管脚复用配置
2 q! Q8 ~+ m( a6 b' I GPIOBankPinMuxSet();( o/ ?8 d" O! E1 S* N; W
for(;;)
1 z1 r# w& O4 C {
% T1 M" W4 m! K! @; `$ B1 v& q SET_SCLK();//时钟正常输出& @1 g* n2 U+ J5 \$ O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ F7 t/ @' J8 |. r! ]. c |, V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ {; v6 |: w7 K# Q5 S" v; S/ G- H( A GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 h9 S# V, ^, i+ z
) N( @+ w( ^ ?, v% \
delay(20);
! k% r9 x) B" T0 b! z8 {5 A CLR_SCLK();; q1 u0 W H% v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! i8 u" X- X- c1 H! Z/ T: Z8 j" X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 K% X( o5 y" L$ {7 d! H2 J- h9 \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 B& M _% l# D& m# h8 f delay(20);
8 r3 F/ k8 ]) n3 @0 X: M. W }$ h2 ~5 ^4 Y, _6 H
}( }2 i3 r3 Y o' j
|
|